我们用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/