我已经使用界面构建器创建了一个视图控制器,同时启用了大小类。
视图对其超视图有前导和尾随约束,这是视图控制器的视图。像这样的东西。
| - (14) - (视图) - (14) - |
当我运行应用程序它看起来很棒时,视图在两侧都有14pt的插图,但是当我打印它的宽度时,我得到576,它比屏幕宽度宽。在界面构建器中,视图的框架宽度设置为576(作为打开大小类时的画布大小)但在运行时,约束应该覆盖此我猜。
视图如何显示正确,但它的框架显示更大的宽度?
答案 0 :(得分:1)
什么时候打印宽度?我猜在ViewDidLoad中。因为您使用Interface Builder并启用大小类,所以默认情况下,宽度和高度为600x600。在视图加载时,大小仍然从“接口”构建器引用大小,直到视图出现,它将根据屏幕大小自动缩放。这就是为什么你的UIView比屏幕宽。
以下是我从使用“界面”构建器构建的视图控制器中打印出来并启用大小类的内容。在iPhone 6S plus上运行
视图中的[大小]确实已加载{{0,0},{600,600}}
视图中的[大小]确实显示{{0,64},{414,623}}
答案 1 :(得分:0)
您可以使用以下方法更新视图:
//允许您在绘图周期发生之前执行布局。 layoutIfNeeded提前布局
[view setNeedsLayout];
[view layoutIfNeeded];