美文网首页
iOS 视图生命周期

iOS 视图生命周期

作者: iOS_肖晨 | 来源:发表于2018-02-24 16:55 被阅读68次

    控制器

    控制器生命周期简介:

    1. init-初始化程序
    2. loadView-从nib载入视图
    3. viewDidLoad-加载视图
    4. viewWillAppear-即将出现
    5. viewWillLayoutSubviews-即将加载子视图
    6. viewDidLayoutSubviews-已经加载子视图
    7. viewDidApper-已经出现
    8. viewWillDisappear-即将消失
    9. viewDidDisappear-已经消失
    10. viewWillUnload-即将释放
    11. viewDidUnload-已经释放

    布局

    我们能看到手机上的视图都是UIView还有它的子UIView,当然不能杂乱无章的显示。要进行布局,父UIView需要布局、排列这些子UIView。UIView提供了layoutSubviews方法来处理。
    一般情况视图方法layoutSubviews调用顺序为:

    viewDidLayoutSubviews (控制器)
    layoutSubviews
    drawRect:
    viewDidApper (控制器)
    

    需要注意的是layoutSubviews方法由系统来调用,不能程序员来手动调用。可以用以下两个手动方法调用:

    1. setNeedsLayout方法进行标记,在UI下个刷屏循环中系统会调用layoutSubviews。
    2. layoutIfNeeded直接请求系统调用layoutSubviews。

    layoutSubviews的自动被调用的时机:

    1. addSubview会触发layoutSubviews,比如viewA add viewB,第一次添加A和B的layoutSubviews都会被调用,而第二次(viewA已经有了viewB)只调用viewB的
    2. view的Frame变化
    3. 滚动UIScrollView会触发layoutSubviews
    4. 旋转Screen会触发父UIView上的layoutSubviews
    5. 改变transform属性时,当然frame也会变
    6. 处于key window的UIView才会调用(程序同一时间只有一个window为keyWindow,可以简单理解为显示在最前面的window为keywindow)

    另:关于 sizeToFit需要注意如下:

    1. sizeToFit会自动调用sizeThatFits方法。
    2. sizeToFit不应该在子类中被重写,应该重写sizeThatFits。
    3. sizeThatFits传入的参数是receiver当前的size,返回一个适合的size。
    4. sizeToFit可以被手动直接调用。
    5. sizeToFit和sizeThatFits方法都没有递归,对subviews也不负责,只负责自己。

    相关文章

      网友评论

          本文标题:iOS 视图生命周期

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