我的UIDatePicker的一部分正在延伸出屏幕底部,尽管我认为我的位置是正确的。谁能告诉我我哪里做错了?我已经检查了下面的几行代码,但是我不知道哪里出错了。我尽量避免显式地为UIDatePicker的框架指定坐标。我在这里包含了视图控制器中的相关代码:
// Create the time picker
self.timePicker = [[UIDatePicker alloc] init];
[self.timePicker addTarget:self action:@selector(datePickerDateChanged:) forControlEvents:UIControlEventValueChanged];
self.timePicker.datePickerMode = UIDatePickerModeTime;
// Set the time picker frame
CGRect screenRect = [self.view frame];
CGSize pickerSize = [self.timePicker sizeThatFits:CGSizeZero];
CGRect pickerRect = CGRectMake(screenRect.origin.x,
screenRect.origin.y + screenRect.size.height - pickerSize.height,
pickerSize.width,
pickerSize.height);
NSLog(@"Picker frame: %f", screenRect.size.height);
NSLog(@"Picker frame: %f", screenRect.origin.y + screenRect.size.height - pickerSize.height);
[self.timePicker setFrame:pickerRect];
// Add the picker to the view
[self.view addSubview:self.timePicker];发布于 2013-06-19 10:45:27
有几个问题。
由于您希望选取器视图相对于self.view放置,因此您希望screenRect基于self.view.bounds,而不是self.view.frame。
另外,永远不要调用sizeThatFits:。改为调用sizeToFit。文档中对这两种方法中的一种进行了说明。但这并不是必须的。选取器视图将自动调整为合适的大小。
您很可能希望选择器视图填充视图的宽度(至少在iPhone/iPod touch上是这样)。所以你的pickerRect应该是:
CGSize pickerSize = self.timePicker.bounds.size;
CGRect pickerRect = CGRectMake(0,
screenRect.size.height - pickerSize.height,
screenRect.size.width,
pickerSize.height);最后一步是为选择器设置autoresizing掩码。由于您希望将选取器固定在视图的底部,因此应将其设置为灵活的上边距。既然你想要它的宽度,就把它设置为可变宽度:
self.timePicker.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth;https://stackoverflow.com/questions/17182009
复制相似问题