myView.bounds.size为所有屏幕尺寸返回相同的值

时间:2018-04-29 18:05:47

标签: ios swift autolayout

我有一个名为contentView的子视图,几乎与superView齐平。

我使用iPhoneX在Storyboard中设计了subView,并为所有屏幕尺寸添加了必要的约束。

在不同的屏幕尺寸上,视图看起来像约束所定义的那样被拉伸,但视图的bound.size在所有屏幕尺寸上保持相同

contentView.bounds.width

以上所有屏幕尺寸都会打印以下值

375.0

我根据它的宽度向我的contentView添加了更多的子视图,但在所有屏幕尺寸上,我得到了相同的值。

似乎375是我最初添加contentView的iPhoneX的点数宽度。

有没有任何理由因为谷歌搜索这个问题没有帮助。 如果有人指出我正确的方向,我真的很感激。

Here are my constraints

2 个答案:

答案 0 :(得分:1)

如果您希望在viewDidLoad()中应用约束,那么它太早了。视图仅假定为viewDidLayoutSubviews()中的约束准备。

答案 1 :(得分:0)

添加

self.view.layoutIfNeeded()
print(“\(myCustomView.bounds)”)

然后你可以打印正确的边界。

这会强制视图在检查之前将所有子视图更新为受约束的大小。在仍在进行的viewDidLoad中,这样可以确保已经发生。

您也可以在viewDidLayoutSubviews()中执行此操作,但如果视图是子视图的子视图,即使在该函数中也可能不正确。