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