美文网首页
视图的生命历程

视图的生命历程

作者: 人生路02 | 来源:发表于2016-06-24 08:50 被阅读19次

    视图的生命历程

    请看这里

    1. -[ViewController initWithCoder:]或-[ViewController initWithNibName:Bundle]:首先从归档文件中加载UIViewController对象。即使是纯代码,也会把nil作为参数传给后者。
    2. -[UIView awakeFromNib]:作为第一个方法的助手,方便处理一些额外的设置。
    3. -[ViewController loadView]:创建或加载一个view并把它赋值给UIViewController的view属性
    4. -[ViewController viewDidLoad]:此时整个视图层次(view hierarchy)已经被放到内存中,可以移除一些视图,修改约束,加载数据等
    5. -[ViewController viewWillAppear:]:视图加载完成,并即将显示在屏幕上,还没有设置动画,可以改变当前屏幕方向或状态栏的风格等。
    6. -[ViewController viewWillLayoutSubviews]:即将开始子视图位置布局
    7. -[ViewController viewDidLayoutSubviews]:用于通知视图的位置布局已经完成
    8. -[ViewController viewDidAppear:]:视图已经展示在屏幕上,可以对视图做一些关于展示效果方面的修改。
    9. -[ViewController viewWillDisappear:]:视图即将消失
    10. -[ViewController viewDidDisappear:]:视图已经消失
    

    如果考虑UIViewController可能在某个时刻释放整个view。那么再次加载视图时显然会从步骤3开始。因为此时的UIViewController对象依然存在。

    总结

    1. 只有init系列的方法,如initWithNibName需要自己调用,其他方法如loadView和awakeFromNib则是系统自动调用。而viewWill/Did系列的方法则类似于回调和通知,也会被自动调用。
    2. 纯代码写视图布局时需要注意,要手动调用loadView方法,而且不要调用父类的loadView方法。纯代码和用IB的区别仅存在于loadView方法及其之前,编程时需要注意的也就是loadView方法。
    3. 除了initWithNibName和awakeFromNib方法是处理视图控制器外,其他方法都是处理视图。这两个方法在视图控制器的生命周期里只会调用一次。

    相关文章

      网友评论

          本文标题:视图的生命历程

          本文链接:https://www.haomeiwen.com/subject/insodttx.html