最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
ios开ViewController的生命周期分析和使用
时间:2014-04-18 编辑:简简单单 来源:一聚教程网
ViewController加载View
从Storyboards中加载的时候,会调用initWithCode,如果不存在则调用init。之后对里面的每个对象调用awakeFromNib方法。
从内存中alloc出来的情况下,调init方法。
ViewController查找与其关联的view,其顺序是:
先判断子类是否重写了loadView,如果有直接调用。之后调viewDidLoad完成View的加载。
如果是外部通过调用initWithNibName:bundle指定nib文件名的话,ViewController记载此nib来创建View。
如果initWithNibName:bundle的name参数为nil,则ViewController会通过以下两个步骤找到与其关联的nib。
如果类名包含Controller,例如ViewController的类名是MyViewController,则查找是否存在MyView.nib;
找跟ViewController类名一样的文件,例如MyViewController,则查找是否存在MyViewController.nib。
如果子类没有重写的loadView,则ViewController会从StroyBoards中找或者调用其默认的loadView,默认的loadView返回一个空白的UIView对象。
注意第一步
ViewController是判断子类是否重写了loadView,而不是判断调用子类的loadView之后ViewController的View是否为空。就是说,如果子类重写了loadView的话,不管子类在loadView里面能否获取到View,ViewController都会直接调viewDidLoad完成View的加载。
ViewController生命周期函数
启动顺序
initWithCoder
如果不存在则调用init
loadView //如果说你进行了重写,会在这里调用,这一步可以参考下文
viewDidLoad
view刚被load完,且已经连接到IBoutlet后,这里放置需要放到初始化里去完成事情。[此时view还没有被显示]
viewWillAppear
当view即将被显示时调用。
他适合做两种事情:
1.最后时刻加载一些高开销的操作
2.修改几何特性
说明:
[如果需要调整view的几何特性[旋转之后 变化之类的巴拉巴拉] 在这里书写]。
如果是长时间的操作 则最好在此开个现成操作。
viewWillLayoutSubviews
即将
viewDidLayoutSubviews
view的子view的frame变化时[如:旋转屏幕]
经常用此方法[did]来处理旋转后的布局问题。
viewDidAppear
刚显示
相关文章
- sora软件价格介绍 02-22
- sora官网入口地址一览 02-22
- Sora生成的视频使用教程 02-22
- 《梦幻西游》元宵灯谜线索答案大全2024 02-22
- 《原神》有朋自远方来第一天通关攻略 02-22
- 《苏醒之路》四个结局达成攻略 02-22