iOS开发总结(A0)- ViewController Life Cycle 及主要阶段的任务

1. 在viewDidLoad 时,geometry并未最终确定(此时ViewController 的 view 刚刚加载完成),

(如果使用storyboard, view 的大小是storyboard中vc 的大小(不确定最新的系统是否有变化))

这时如果依赖 View 的 frame 或者 bounds 进行某种操作,是不可靠的

2. 在viewDidLoad 之前,storyboard 中的Outlet 还未设置, 当用segue 转场时,若要对Outlet 属性进行操作,是无效的。

3. 只要geometry变化,viewWillLayoutSubviews 和 viewDidLayoutSubviews 就会调用(vc 先调用viewWillLayoutSubviews,View Controller 的 view 再调用 layoutSubview,最后调用viewDidLayoutSubviews)。

在viewWillAppear 和viewDidAppear 之间可能会调用多次, 因此最好不用在这两个方法中进行耗时的操作。

一般在以上方法中需要做什么:

1. viewDidLoad

初始化设置 view controller(如从本地或网络读取数据)

布局,添加各种event, gesture等

如上所述,不要再这里初始化任何geometry相关的内容,因为geometry未确定

2. viewWillAppear, viewDidAppear,viewWillDisappear,viewDidDisappear

增加和移除observer,应配对出现,以上的方法是很好的时机;

在viewDidAppear 中最好不要做改变UI相关的事情,因为UI已经呈现,再改变,容易给人卡顿的错觉。

 

原文地址:https://www.cnblogs.com/beddup/p/4610917.html