为什么 UIView 比 Screen 宽

Why UIView is wider than Screen

我已经使用界面生成器创建了一个视图控制器,而尺寸 类 已启用。

视图对其超级视图(视图控制器的视图)具有前导和尾随约束。像这样。

|-(14)-(查看)-(14)-|

当我运行安装应用程序时,它看起来很棒,视图的两边都有 14pt 的插图,但当我打印它的宽度时,我得到 576,这比屏幕宽度还宽。在界面生成器中,视图的框架宽度设置为 576(当 类 大小打开时的 canvas 大小)但是在 运行 时间约束应该覆盖这个我猜。

为什么视图显示正确,但它的框架显示更大的宽度??

您可以使用以下方法更新您的视图:

// 允许您在绘图循环发生之前执行布局。 layoutIfNeeded 强制布局提前

[查看 setNeedsLayout];

[查看layoutIfNeeded];

你什么时候打印的宽度?。我猜在 ViewDidLoad 中。因为您使用 Interface Builder 并启用大小 类,所以默认情况下,宽度和高度为 600x600。在视图加载时,尺寸仍然参考界面生成器的尺寸,直到视图出现,它会根据屏幕尺寸自动缩放。这就是为什么你的 UIView 比屏幕宽。

这是我从使用 Interface builder 构建的视图控制器打印出来并启用大小 类。 运行 上 iPhone 6S 加

视图中的 [Size] 确实加载了 {{0, 0}, {600, 600}}

视图中的[Size]确实出现了{{0, 64}, {414, 623}}