首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >定位UIDatePicker

定位UIDatePicker
EN

Stack Overflow用户
提问于 2013-06-19 10:33:45
回答 1查看 1K关注 0票数 0

我的UIDatePicker的一部分正在延伸出屏幕底部,尽管我认为我的位置是正确的。谁能告诉我我哪里做错了?我已经检查了下面的几行代码,但是我不知道哪里出错了。我尽量避免显式地为UIDatePicker的框架指定坐标。我在这里包含了视图控制器中的相关代码:

代码语言:javascript
运行
复制
// 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];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-19 10:45:27

有几个问题。

由于您希望选取器视图相对于self.view放置,因此您希望screenRect基于self.view.bounds,而不是self.view.frame

另外,永远不要调用sizeThatFits:。改为调用sizeToFit。文档中对这两种方法中的一种进行了说明。但这并不是必须的。选取器视图将自动调整为合适的大小。

您很可能希望选择器视图填充视图的宽度(至少在iPhone/iPod touch上是这样)。所以你的pickerRect应该是:

代码语言:javascript
运行
复制
CGSize pickerSize = self.timePicker.bounds.size;
CGRect pickerRect = CGRectMake(0,
                               screenRect.size.height - pickerSize.height,
                               screenRect.size.width,
                               pickerSize.height);

最后一步是为选择器设置autoresizing掩码。由于您希望将选取器固定在视图的底部,因此应将其设置为灵活的上边距。既然你想要它的宽度,就把它设置为可变宽度:

代码语言:javascript
运行
复制
self.timePicker.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17182009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档