你能举一个在 viewWillLayoutSubviews 或 viewDidLayoutSubviews 中使用代码的例子吗?
正如我从文档中了解到的那样,在 LayoutSubviews 内部(到开头?到结尾?),框架具有真实大小(通过限制),您可以更改它们。
但我找不到一个很好的例子。
你能举一个在 viewWillLayoutSubviews 或 viewDidLayoutSubviews 中使用代码的例子吗?
正如我从文档中了解到的那样,在 LayoutSubviews 内部(到开头?到结尾?),框架具有真实大小(通过限制),您可以更改它们。
但我找不到一个很好的例子。
在这篇文章中查看。iOS swift - setNeedsLayout vs layoutIfNeeded vs layoutSubviews()
一切都变得非常简单。
UIViewController 生命周期方法的调用顺序如下:
此外,在调用 viewWillLayoutSubviews 时,考虑到约束,我们仍然没有框架的真实坐标/大小,并且在 viewDidLayoutSubviews 中我们已经有了真实坐标,我们可以在那里轻松地更改它们。
如果我们在 viewDidAppear 中更改坐标/大小,我们已经有了真实的坐标/大小,那么在有很多元素的屏幕上,我们会看到元素的“跳跃”。
因此,在viewDidLayoutSubviews中应该改变坐标,因为 此时,我们已经可以得到周围元素的真实坐标/大小,但是这些元素还没有显示给用户。当某些元素的坐标/大小取决于其他元素的坐标或大小并且难以预先计算这些大小时,应使用 viewDidLayoutSubviews。