模拟器中的UIView边界/绘图不正确

时间:2012-12-05 13:18:52

标签: ios xcode uiview ios-simulator bounds

我创建了一个单一视图测试应用,并在主故事板中的UIButton添加了UIViewUIViewController。我已将按钮和视图的大小调整为相同大小。

enter image description here

在我的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

enter image description here

1 个答案:

答案 0 :(得分:1)

单击显示布局中的“应用Retina 4 Form Factor”按钮。你有这个Retina 4的设置,所以当在模拟器中运行时,屏幕大小调整为3.5。您可以通过运行iPhone5模拟器(Retina 4英寸)来验证这一点。在将形状因子切换为3.5“后,您会注意到高度变为12。

enter image description here