2

我已经创建了一个使用界面生成器的视图控制器,而大小类是打开的。为什么UIView比屏幕更宽

该视图具有领先和尾随约束,以超视图这是视图控制器的视图。像这样的东西。

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

当我运行应用程序它看起来不错,视图有两边14pt的插图,虽然当我打印它的宽度时,我得到576比屏幕宽度更宽。在界面构建器中,视图的框架宽度设置为576(因为大小类处于打开状态时的画布大小),但在运行时,约束应该覆盖此我猜。

怎么会出现正确的视图,但它的框架显示更大的宽度?

回答

1

您是什么时候打印宽度的?我猜想在ViewDidLoad。因为您使用Interface Builder并启用大小类别,所以默认情况下,宽度和高度均为600x600。在视图加载时,尺寸仍将引用界面构建器中的大小,直到视图确实出现,它将根据屏幕大小自动缩放。那为什么你的UIView比屏幕宽。

这是我从使用Interface Builder和启用大小类建立的视图控制器打印出来的内容。在iPhone 6S运行加

[大小]在图做负载{{0,0},{600,600}}

[大小]在图确实出现{{0,64},{414 623}}

0

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

//允许您绘制周期发生之前进行布局。 layoutIfNeeded力布局提前

[view setNeedsLayout];

[view layoutIfNeeded];

+0

我已经在做这个 –