歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

iOS開發之自定義彈出UIPickerView或UIDatePicker(動畫效果)

前面iOS開發之UIPickerView控件的簡單使用 (見 http://www.linuxidc.com/Linux/2012-08/67784.htm) 用到的UIPickerView彈出來是通過 textField.inputView = selectPicker;   textField.inputAccessoryView = doneToolbar; 這中方法來做的。如果UIPickerView或UIDatePicker控件通過其他按鈕或事件激活的時候怎麼能像系統那樣彈出來呢?為了實現這個需求,就要用到動畫效果了。

1、新建一個Single View App項目,在.xib文件中添加控件如下:


兩個button,一個UIDatePicker。

2、創建xib和ViewController的連接

按住Control鍵創建三個控件對於的映射。 創建後viewController.h代碼如下
  1. #import <UIKit/UIKit.h>   
  2.   
  3. @interface ViewController : UIViewController  
  4. @property (retain, nonatomic) IBOutlet UIDatePicker *pickerView;  
  5. - (IBAction)popView:(id)sender;  
  6. - (IBAction)inView:(id)sender;  
  7. @property  (nonatomic, retain) NSString *string;  
  8. @end  

3、隱藏pickerView

  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.     self.pickerView.frame = CGRectMake(0, 480, 320, 260);  
  5. }  
把pickerView 放到屏幕以為下面。

4、彈出和彈回pickerView 在pickerView彈出來或回去的時候,設置動畫
  1. - (IBAction)popView:(id)sender {  
  2.       
  3.     CGContextRef context = UIGraphicsGetCurrentContext();  
  4.     [UIView beginAnimations:nil context:context];  
  5.     [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];  
  6.     [UIView setAnimationDuration:0.6];//動畫時間長度,單位秒,浮點數   
  7.     [self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:1];  
  8.     self.pickerView.frame = CGRectMake(0, 245, 320, 260);  
  9.       
  10.     [UIView setAnimationDelegate:self];  
  11.     // 動畫完畢後調用animationFinished   
  12.     [UIView setAnimationDidStopSelector:@selector(animationFinished)];  
  13.     [UIView commitAnimations];  
  14. }  
  15.   
  16. - (IBAction)inView:(id)sender {  
  17.     CGContextRef context = UIGraphicsGetCurrentContext();  
  18.     [UIView beginAnimations:nil context:context];  
  19.     [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];  
  20.     [UIView setAnimationDuration:0.6];//動畫時間長度,單位秒,浮點數   
  21.     self.pickerView.frame = CGRectMake(0, 480, 320, 260);  
  22.       
  23.     [UIView setAnimationDelegate:self];  
  24.     // 動畫完畢後調用animationFinished   
  25.     [UIView setAnimationDidStopSelector:@selector(animationFinished)];  
  26.     [UIView commitAnimations];  
  27. }  
  28. -(void)animationFinished{  
  29.     NSLog(@"動畫結束!");  
  30. }  
動畫結束後回調動畫結束的函數。 運行,彈出   
第一個圖片是彈出來到一半,第二個圖片彈出全部。
Copyright © Linux教程網 All Rights Reserved