UIScrollview 框架仅在滚动后正确更新

UIScrollview frame only updating correctly after scrolling

所以我在界面生成器中创建了一个 UIScrollView 作为视图控制器视图的子视图,并设置了所有自动布局约束,以便它调整大小以填充它的超级视图(尾随、前导、底部和顶部约束设置为零关于问候到它的超级视图)。

当我 运行 应用程序时,滚动视图最初不会将其框架更新为与其父视图相同的大小。 scrollview frame.size.width = 320 即使我 运行 在 iPhone 6 或 iPhone 6 plus 模拟器上使用它。

我一开始滚动,滚动视图框架就会更新为正确的值(与其超级视图相同)。为什么会这样?自动布局不应该根据其超级视图自动调整滚动视图的大小吗?

我设法解决这个问题的唯一方法是在 viewDidLoad 中添加以下内容:

scrollView.frame = view.frame.

知道为什么会这样吗?好像不太合逻辑。

非常感谢

好的,经过一些实验,我明白了。 我正在检查 viewDidLoad 中的滚动视图帧大小,它返回 320 但是,似乎自动布局只会在 viewDidLoad 之后调整大小,并会在完成后调用 viewDidLayoutSubviews() resizing/repositioning...etc

因此,当我检查 viewDidLayoutSubviews 中的框架尺寸时,我得到正确的框架尺寸 375(对于 iPhone 6)。

谢谢