UIViewController视图生命周期
2017-01-14 14:15:30 0 举报
UIViewController是iOS开发中常用的一个视图控制器,它负责管理一个视图的生命周期。当UIViewController被创建时,它的view会被加载并添加到窗口中,然后它会进入视图的loadView方法。在这个方法中,我们可以为视图设置一些属性和布局。接下来,视图会进入视图的layoutSubviews方法,这个方法会在视图的大小发生改变时被调用。然后,视图会进入视图的viewDidLoad方法,这个方法会在视图的所有子视图都已经被添加到视图中之后被调用。最后,当UIViewController即将被释放时,它会进入视图的dealloc方法,在这里我们可以释放一些资源。
作者其他创作
大纲/内容
调用viewWillLayoutSubviews方法通知视图控制器,即将要布局子视图,或者当一个视图的bounds要改变了,需要调整其子视图的位置
调用init方法,做初始化工作
init
initWithFrame
awakeFromNib
initWithCoder
调用viewWillDisappear方法通知视图控制器,视图即将从整体的视图层中移除
UIView加载总结
调用initWithNibName:方法(一般是用来指定nib名字)或者调用init:方法(若调用init方法,不要重载loadView方法,此时系统会帮你去调用loadView方法去寻找和类同名的xib文件)
调用initWithNibName:bundle:(如果使用storyboard,是不会调用此方法的)
调用viewDidLayoutSubviews方法通知视图控制器,已经布局好子视图
调用initWithCoder:方法(子控件还未创建)
代码加载View
调用viewWillAppear方法处理动画配置之前
调用awakeFromNib:方法(子控件创建完毕)
调用awakeFromNib方法处理一些自定义的额外的初始化信息
调用viewDidDisappear方法通知视图控制器,视图已经从整体的视图层中移除(从视图层中移除,并不代表从内存中移除)
storyboard中加载
initWithNibName:与loadNibName:方法的区别在于:initWithNibName:延迟加载,这个View上的控件是nil的,只有到需要显示时,才不会为nilloadNibName:即时加载,用该方法加载的xib对象中的各个元素都已经存在
调用loadNibName:方法
Xib加载View
调用viewDidAppear方法通知视图控制器,视图已经加入到整体的视图层中
加载ViewController
调用loadView(如果在初始化时指定了xib文件名,就会根据传入的xib文件名进行加载xib文件;如果没有找到,就会加载与文件名同名的xib文件;如果没有找到,就会创建一个空白的view)
调用initWithCoder:方法从storyboard中解档数据
调用loadView方法加载或者创建视图,并且赋予视图属性
纯代码中加载
调用viewDidLoad方法加载视图层内容到内存中
生成UIStoryboard对象,调用这个对象的instantiateViewControllerWithIdentifier:方法
加载View
UIViewController的生命周期探寻
xib中加载
0 条评论
下一页