我们用iphone控件实现form表单时,有时需要添加时间控件,一般的做法是添加按钮,点击按钮从底部出现时间选择器。如下图:
实现代码:
#import "iphone_datapicketViewController.h" @implementation iphone_datapicketViewController @synthesize myDatePicker,myView; - (void)viewDidLoad { [super viewDidLoad]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } - (void)viewDidUnload { self.myDatePicker =nil; self.myView=nil; } - (void)dealloc { [self.myDatePicker release]; [self.myView release]; [super dealloc]; } -(IBAction)onClickButton:(id)sender { [self showDatePick]; } -(IBAction)onClickCloseButton:(id)sender { [self dissDatePick]; } -(void)showDatePick { if (self.myView.superview == nil) { [self.view.window addSubview: self.myView]; } CGRect screenRect = [[UIScreen mainScreen] applicationFrame]; CGSize pickerSize = [self.myView sizeThatFits:CGSizeZero]; CGRect startRect = CGRectMake(0.0, screenRect.origin.y + screenRect.size.height, pickerSize.width, pickerSize.height); self.myView.frame = startRect; CGRect pickerRect = CGRectMake(0.0, screenRect.origin.y + screenRect.size.height – pickerSize.height, pickerSize.width, pickerSize.height); [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.3]; [UIView setAnimationDelegate:self]; self.myView.frame = pickerRect; CGRect newFrame = self.view.frame; newFrame.size.height -= self.myView.frame.size.height; self.view.frame = newFrame; [UIView commitAnimations]; } -(void)dissDatePick { CGRect screenRect = [[UIScreen mainScreen] applicationFrame]; CGRect endFrame = self.myView.frame; endFrame.origin.y = screenRect.origin.y + screenRect.size.height; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.3]; [UIView setAnimationDelegate:self]; self.myView.frame = endFrame; [UIView commitAnimations]; CGRect newFrame = self.view.frame; newFrame.size.height += self.myView.frame.size.height; self.view.frame = newFrame; } @end
还有利用ib创建控件和相连。
源代码:http://easymorse-iphone.googlecode.com/svn/trunk/iphone.datapicket/
