我正在阅读viewDidLayoutSubviewsUIViewController的描述:



对我来说,它的意思是:“在 subview 的布局完成时调用,但实际上并非如此”。那么viewDidLayoutSubviews到底是什么呢?

最佳答案

当ViewControllers View 的边界发生变化时,在更改 subview 的位置和大小后将调用此方法。

  • 因此,这是我们在布局了 subview 之后但在屏幕上不可见之前进行更改以进行 View 更改的机会。
  • 必须根据边界进行任何更改,我们可以在此处执行此操作,而不能在ViewDidLoad或ViewWillAppear中进行。
  • 在ViewDidLoad和ViewWillAppear时, View 的框架和边界为
    尚未完成。因此,当AutoLayout完成后,便可以修复mainView和
    它是 subview ,此方法称为。

  • 使用自动布局时,框架不会每次都调用layoutSubviews。在这种情况下,这就是所谓的。
  • 旋转设备:仅在父 View (响应的viewControllers主 View )上调用layoutSubview。
  • 自己的边界(不是框架)已更改。 (仅当新值不同(包括不同的来源)时,才认为边界发生了变化。)
  • subview 已添加到 View 或从 View 中删除。
  • 您的应用程序通过调用 View 的setNeedsLayoutlayoutIfNeeded方法强制进行布局。
  • 滚动UIScrollView会导致在scrollView及其父 View 上调用layoutSubviews。

  • 笔记:
    对viewDidLayoutSubviews的调用还取决于各种因素,例如自动调整大小蒙版,是否使用自动布局以及 View 是否在 View 层次结构中。

    对于其他说明,请检查When is layoutSubviews called?

    关于ios - 究竟viewDidLayoutSubviews是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40737164/

    10-09 07:55