viewDidLayoutSubviews 到底是什么?

2023-11-24

我正在阅读描述viewDidLayoutSubviews of UIViewController:

调用以通知视图控制器其视图刚刚布置了其子视图[...]但是,调用此方法并不表明视图子视图的各个布局已被调整。每个子视图负责调整自己的布局[...]。

对我来说,这意味着:“当子视图布局完成时调用,但实际上这不是真的”。那么真正的背后是什么viewDidLayoutSubviews?


当 ViewControllers View 的边界发生变化时,在子视图的位置和大小发生变化后调用此方法。

  1. 因此,这是我们在视图布置其子视图之后但在屏幕上可见之前对视图进行更改的机会。

  2. 任何依赖于边界的更改都可以在这里完成,而不是在 ViewDidLoad 或 ViewWillAppear 中完成。

  3. 而 ViewDidLoad 和 ViewWillAppear 则表示视图的框架和边界 尚未最终确定。因此,当 AutoLayout 完成后,它的工作就是修复 mainView 和 它的子视图,调用此方法。

当使用自动布局时,框架不会每次都调用layoutSubviews。在这些情况下称为此。

  • 旋转设备:只在父视图(响应的viewControllers主视图)上调用layoutSubview

  • 它自己的边界(而不是框架)发生了变化。 (仅当新值不同(包括不同的原点)时,才认为边界已更改。)

  • 子视图被添加到视图中或从视图中删除。
  • 您的应用程序通过调用强制布局发生setNeedsLayout or layoutIfNeeded视图的方法。
  • 滚动 UIScrollView 会导致在scrollView及其父视图上调用layoutSubviews。

笔记: 对 viewDidLayoutSubviews 的调用还取决于各种因素,例如自动调整大小掩码、是否使用自动布局以及视图是否位于视图层次结构中。

如需任何其他说明,请检查何时调用layoutSubviews?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

viewDidLayoutSubviews 到底是什么? 的相关文章

随机推荐