何时调用ViewWillLayoutSubviews和ViewDidLayoutSubviews方法?

时间:2014-05-04 14:28:51

标签: ios objective-c ios7 uiviewcontroller ios6

什么时候调用UIViewController的ViewWillLayoutSubviewsViewDidLayoutSubviews方法? willLayoutSubviews之前视图框架的状态是什么?

1 个答案:

答案 0 :(得分:43)

来自文档:

  

当视图的边界发生变化时,视图会调整其子视图的位置。您的视图控制器可以覆盖此方法以在视图布局其子视图之前进行更改。 ( Link

只要视图控制器的视图的边界发生变化,

viewWillLayoutSubviews就会被调用。加载视图,发生旋转事件或子视图控制器的大小由其父级更改时,会发生这种情况。 (也可能还有其他一些情况)。如果在视图自行放置之前有任何需要更新的内容(并且在重新应用约束之前),则应在此处执行此操作。你通常应该更新约束,因为更新约束会导致另一个布局传递。

布置完所有子视图后,将调用

viewDidLayoutSubviews。例如,如果您需要通过手动调整框架来微调该布局,那么就可以进行此操作。

查看控制器生命周期可能有点令人困惑,但是如果你要进行大量的iOS开发,那么值得尝试真正理解。 This article是一个非常好的概述。