程序启动、UIWindow创建、View加载显示过程

1、程序运行起来,通过main函数入口创建UIApplication,同时设置代理,创建完成application,想要显示View,需要添加UIWindow(特殊的View,存活于整个生命周期,确保添加的内容可以显示)。
2、设置window的根控制器,管理需要显示的View
3、View的创建
程序启动、UIWindow创建、View加载显示过程_第1张图片
view的创建.jpg
a. 如果重写loadView,就根据自定义的view创建view

b. 如果没有重写loadView,就去查看有没有storyboard,有storyboard,就根据storyboard里描述的view创建;

c. 如果没有storyboard,就去查看有没有指定的xib,有指定的xib,就根据xib里描述的view创建;

d. 如果没有指定的xib,即nibName为nil时,就查看有没有与xib的拥有者同名的xib,但优选查看没有Controller的xib,如果查不到,就查看有没有与xib的拥有者完全同名的xib,如:xib的拥有者是ViewController,xib的文件名是View,就优先查看View.xib,根据它描述的view创建;如果没有文件名为View的xib,就去查看有没有名字为ViewController的xib,如果有就根据xib里描述的view创建

e. 如果以上的情况都没有,就创建一个空的View
4、View的声明周期
程序启动、UIWindow创建、View加载显示过程_第2张图片
view的生命周期.jpg
loadView:第一次使用view的时候调用

viewDidLoad:控制器的view加载完成的时候调用

viewWillAppear:控制器的view即将显示的时候调用

viewDidAppear:控制器的view完全显示的时候调用

viewWillDisappear:控制器的view即将消失的时候调用

viewDidDisappear:控制器的view完全消失的时候调用

viewWillLayoutSubviews:控制器的view即将布局的时候调用

viewDidLayoutSubviews:控制器的view完全布局的时候调用

viewWillUnload:控制器的view即将销毁

viewDidUnload:控制器的view完全销毁

参考

https://www.cnblogs.com/oc-bowen/p/6061261.html

你可能感兴趣的:(程序启动、UIWindow创建、View加载显示过程)