iOS學習之自訂彈出UIPickerView或UIDatePicker(動畫效果)

來源:互聯網
上載者:User
    前面iOS學習之UIPickerView控制項的簡單使用 用到的UIPickerView彈出來是通過 textField.inputView = selectPicker;   textField.inputAccessoryView = doneToolbar; 這中方法來做的。如果UIPickerView或UIDatePicker控制項通過其他按鈕或事件啟用的時候怎麼能像系統那樣彈出來呢?為了實現這個需求,就要用到動畫效果了。1、建立一個Single View App項目,在.xib檔案中添加控制項如下:兩個button,一個UIDatePicker。2、建立xib和ViewController的串連按住Control鍵建立三個控制項對於的映射。建立後viewController.h代碼如下
#import <UIKit/UIKit.h>@interface ViewController : UIViewController@property (retain, nonatomic) IBOutlet UIDatePicker *pickerView;- (IBAction)popView:(id)sender;- (IBAction)inView:(id)sender;@property  (nonatomic, retain) NSString *string;@end
3、隱藏pickerView

- (void)viewDidLoad{    [super viewDidLoad];    self.pickerView.frame = CGRectMake(0, 480, 320, 260);}

把pickerView 放到螢幕以為下面。

4、彈出和彈回pickerView

在pickerView彈出來或回去的時候,設定動畫
- (IBAction)popView:(id)sender {        CGContextRef context = UIGraphicsGetCurrentContext();    [UIView beginAnimations:nil context:context];    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];    [UIView setAnimationDuration:0.6];//動畫時間長度,單位秒,浮點數    [self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:1];    self.pickerView.frame = CGRectMake(0, 245, 320, 260);        [UIView setAnimationDelegate:self];    // 動畫完畢後調用animationFinished    [UIView setAnimationDidStopSelector:@selector(animationFinished)];    [UIView commitAnimations];}- (IBAction)inView:(id)sender {    CGContextRef context = UIGraphicsGetCurrentContext();    [UIView beginAnimations:nil context:context];    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];    [UIView setAnimationDuration:0.6];//動畫時間長度,單位秒,浮點數    self.pickerView.frame = CGRectMake(0, 480, 320, 260);        [UIView setAnimationDelegate:self];    // 動畫完畢後調用animationFinished    [UIView setAnimationDidStopSelector:@selector(animationFinished)];    [UIView commitAnimations];}-(void)animationFinished{    NSLog(@"動畫結束!");}

動畫結束後回調動畫結束的函數。

運行,彈出  第一個圖片是彈出來到一半,第二個圖片彈出全部。4、代碼塊的方法做動畫彈出pickerView單獨寫個方法
- (void)ViewAnimation:(UIView*)view willHidden:(BOOL)hidden {        [UIView animateWithDuration:0.3 animations:^{        if (hidden) {            view.frame = CGRectMake(0, 480, 320, 260);        } else {            [view setHidden:hidden];            view.frame = CGRectMake(0, 245, 320, 260);        }    } completion:^(BOOL finished) {        [view setHidden:hidden];    }];}
5、在Action中調用
- (IBAction)popView:(id)sender {    [self ViewAnimation:self.pickerView willHidden:NO];}- (IBAction)inView:(id)sender {    [self ViewAnimation:self.pickerView willHidden:YES];}

這個方法更簡單實用

PS:以上的方法可以用在TableViewCell點擊cell時彈回pickerView等需求.例子源碼:http://download.csdn.net/detail/totogo2010/4472062

著作權聲明:本文由http://blog.csdn.net/totogo2010/原創,歡迎轉載分享。請尊重作者勞動,轉載時保留該聲明和作者部落格連結,謝謝

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.