目录
五、控制器View的生命周期
更详细的生命周期请查看:iOS程序执行顺序和UIViewController 的生命周期(整理)
题目1:控制器View的生命周期及相关函数是什么?你在开发中是如何用的?
1 | 1.在视图显示之前调用viewWillAppear;该函数可以调用多次; |
viewWillAppear——-》viewWillLayoutSubviews—–》viewDidLayoutSubviews———–》
viewDidAppear
题目2:loadView, viewDidLoad, viewDidUnLoad,分别是在什么时候被调用的.
loadView, viewDidLoad, viewDidUnLoad,分别是在什么时候被调用的.
3、layoutSubviews布局与drawRect重绘
(1)、layoutSubviews布局
layoutSubviews是对subviews重新布局;
比如,我们想更新子视图的位置的时候,可以通过调用layoutSubviews方法,即可以实现对子视图重新布局。但实际上一般我们都是不要直接手动调用layoutSubviews方法。因为有操作时候,系统会自动调用layoutSubviews。
那我们进行哪些操作会触发layoutSubviews方法呢?答如下:
1 | 首先注意: |
所以我们可以看出当视图约束/frame变化时候,会触发layoutSubviews,进行重新布局。
1 | 附: |
其他参考文章:iOS layoutSubview的方法总结/重绘drawRect
什么时候用layoutSubviews?
答:仅仅在以下情况下:自动布局达不到想要效果时你才有必要重写这个方法.可以直接设置subviews的尺寸.
(2)、drawRect重绘
重绘作用:重写该方法以实现自定义的绘制内容
1 | -drawRect:(CGRect)rect方法:重写此方法,执行重绘任务 |
(3)、updateConstraints更新约束、layoutSubviews重新布局与drawRect重绘的调用顺序
1 | layoutSubviews是对subviews重新布局; |
所以,在调用updateConstraintsIfNeeded可能会立即执行updateConstraints,然后调用layoutSubviews。因为按照Autolayout布局的步骤,应该是先更新约束然后更新布局的。