我创建了一个单一视图测试应用,并在主故事板中的UIButton
添加了UIView
和UIViewController
。我已将按钮和视图的大小调整为相同大小。
在我的VC的-viewDidAppear:动画方法中我转储了按钮和视图的框架和边界:
- (void)viewDidAppear:(BOOL)animated
{
NSLog(@"button bounds: %@", NSStringFromCGRect(self.theButton.bounds));
NSLog(@"button frame: %@", NSStringFromCGRect(self.theButton.frame));
NSLog(@"view bounds: %@", NSStringFromCGRect(self.theView.bounds));
NSLog(@"view frame: %@", NSStringFromCGRect(self.theView.frame));
}
这是在模拟器中运行时的输出:
button bounds: {{0, 0}, {100, 100}}
button frame: {{110, 72}, {100, 100}}
view bounds: {{0, 0}, {100, 12}}
view frame: {{110, 179}, {100, 12}}
在设备上运行时:
button bounds: {{0, 0}, {100, 100}}
button frame: {{110, 72}, {100, 100}}
view bounds: {{0, 0}, {100, 100}}
view frame: {{110, 179}, {100, 100}}
我不明白为什么在模拟器中运行时视图报告高度为12。视图在模拟器中绘制不正确,但在设备上运行时按预期绘制。请注意,UIViewController
的最顶层UIVIew
未选中“自动调整子视图”(尽管它不会产生任何影响)。
(Xcode 4.5.2.iOS 6.0)
谢谢, CS
答案 0 :(得分:1)
单击显示布局中的“应用Retina 4 Form Factor”按钮。你有这个Retina 4的设置,所以当在模拟器中运行时,屏幕大小调整为3.5。您可以通过运行iPhone5模拟器(Retina 4英寸)来验证这一点。在将形状因子切换为3.5“后,您会注意到高度变为12。