【问题标题】:Incorrect UIView bounds/drawing in the Simulator模拟器中的 UIView 边界/绘图不正确
【发布时间】:2012-12-05 13:18:52
【问题描述】:

我创建了一个单视图测试应用,并在主情节提要的UIViewController 中添加了UIButtonUIView。我已经调整了按钮和视图的大小以具有相同的大小。

在我的 VC 的 -viewDidAppear:animated 方法中,我转储了按钮和视图的框架和边界:

- (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 未选中“Autoresize Subviews”(尽管这两种方式都没有区别)。

(Xcode 4.5.2.iOS 6.0)

谢谢, 计算机科学

【问题讨论】:

  • 从视图底部延伸出来的那条线,也许是让它自动调整视图大小?
  • jjv360:那一行只是 IB 的自动居中指南。它可以帮助您在其父视图中居中视图)。它与绘画无关。 :)
  • 向视图添加内容并查看它是否自动调整大小。
  • Captain.MM - 我不知道为什么这会导致 same 应用程序在设备和模拟器上的行为不同,但我在小 UIView 中添加了一个 UILabel 和没有区别(正如预期的那样)。
  • 您正在使用相当新的约束。可能存在错误并非不可能。尝试删除它们。

标签: ios xcode uiview ios-simulator bounds


【解决方案1】:

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

【讨论】:

  • 感谢 MarkM。那确实是我的问题。我想知道那时我应该如何在 IB 工作。例如,假设无论设备/模拟器大小如何,我都希望视图为 100、100?为什么按钮没有像视图那样调整大小? (再次,提前感谢)
  • 我倾向于始终使用 3.5" 外形尺寸,然后来回切换以检查兼容性。这减轻了每次检查布局时都必须启动模拟器的情况。AutoLayout 为此添加了另一层,但概念是一样的。坚持使用 3.5" 布局,除非您不打算支持任何 3.5" 设备。Ray 在他的网站上有一篇非常好的文章。老实说,我仍然不喜欢使用 AutoLayout 功能。 raywenderlich.com/20897/beginning-auto-layout-part-2-of-2
  • 再次感谢您,Mark - 我现在理解了这个问题,并将继续使用您的建议。我还将查看 Ray 的教程(我喜欢那个网站)。请支持我的问题,除非你认为我是个白痴。 ;-)
  • 即使我认为你是个白痴,我也可以投票吗?!?!大声笑,完全在开玩笑......赞成。 ;-) 是的,多年来,Ray 一直是许多开发人员的良好开端。那里的许多作者都写了很棒的 tuts 并提供了出色的现实世界示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-22
  • 2021-05-19
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多