【发布时间】:2011-06-03 19:13:08
【问题描述】:
我会弹出一个 DatePicker,其中包含以下内容。现在我试图在弹出框的顶部添加一个完成按钮。
-(IBAction) contactBDayDatePicker{
NSLog(@"contactBDayDatePicker");
pickerView = [[UIDatePicker alloc] init];
pickerView.datePickerMode = UIDatePickerModeDate;
if (self.pickerView.superview == nil){
[self.view.window addSubview: self.pickerView];
// size up the picker view to our screen and compute the start/end frame origin for our slide up animation
//
// compute the start frame
CGRect screenRect = [[UIScreen mainScreen] applicationFrame];
NSLog(@"screenRect %@",NSStringFromCGRect(screenRect));
CGSize pickerSize = [self.pickerView sizeThatFits:CGSizeZero];
NSLog(@"pickerSize %@",NSStringFromCGSize(pickerSize));
CGRect startRect = CGRectMake(0.0,
screenRect.origin.y + screenRect.size.height,
pickerSize.width, pickerSize.height);
self.pickerView.frame = startRect;
NSLog(@"pickerView.frame %@",NSStringFromCGRect(startRect));
// compute the end frame
CGRect pickerRect = CGRectMake(0.0,
screenRect.origin.y + screenRect.size.height - pickerSize.height,
pickerSize.width,
pickerSize.height+10);
NSLog(@"pickerRect %@",NSStringFromCGRect(pickerRect));
// start the slide up animation
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
// we need to perform some post operations after the animation is complete
[UIView setAnimationDelegate:self];
self.pickerView.frame = pickerRect;
[UIView commitAnimations];
}
}
我尝试将帧大小增加 10 个点(请参阅上面的 CGSize pickerSize),并认为我可以使用类似以下的内容,但按钮拒绝显示,而且我不确定如何将按钮放置在 pickerSize 内框架本身。 (顺便说一句)如果重要的话,DatePicker 和 Button 会覆盖滚动视图。
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"Done" forState:UIControlStateNormal];
button.center = CGPointMake(160,240);
[button addTarget:self action:@selector(done) forControlEvents:(UIControlEventTouchUpInside)];
[self.view addSubview:button];
感谢任何想法。
【问题讨论】:
-
为什么需要一个按钮?你能具体说明一下吗?您可以在没有按钮的情况下显示结果。
-
我相信我对这个问题的回答是一个更优雅的解决方案:stackoverflow.com/a/22768513/1631695。
标签: iphone popup datepicker