美文网首页
浅谈ViewController的生命周期

浅谈ViewController的生命周期

作者: Ashscar | 来源:发表于2017-06-04 10:55 被阅读0次

    awakeFromNib

    当 view 被从 Storyboard 或者 Nib 文件中加载出来时会调用这个方法,只会在所有对象被创建后调用。

    这个方法在执行loadNibNamed:owner:,storyboardWithName:bundle:这一类方法时会调用。

    此方法覆盖时需要调用 super 方法。默认的 super 方法里没有实现。

    loadView()

    View Controller 创建后需要加载 self.view 时会调用这个方法。此方法不应该被直接调用。

    如果我们的界面是在 Storyboard 中创建的,那我们也不应该覆盖这个方法。

    此方法覆盖时不该调用 super 方法。

    viewDidLoad()

    当 View Controller 的 View 被加载入后会调用这个方法,因此正常情况下只会调用一次。

    此方法覆盖时需要调用 super 方法。

    viewWillAppear

    当 View 将要被添加到 View Hierarchy 中时会调用这个方法,每一次 View 将要显示时都会调用。在这个方法被调用时,也是在显示 View 所需要的动画被配置前。

    这个时候在做一些和 frame 相关的操作时仍会出错,在这里 View 将要被加入 View Hierarchy,但是仍旧没有被添加进去。

    此方法覆盖时需要调用 super 方法。

    viewWillLayoutSubviews

    在 ViewController.view 将要布局 Subviews 时调用。

    在这之后 AutoLayout 会改变布局。

    viewDidLayoutSubviews

    已经布局完成,也可以做一些操作。

    已通过 AutoLayout 布局。

    viewDidAppear

    此时界面已经被显示出来了,做一些操作时可能会让界面变化可见。

    viewWillDisappear

    在界面将要消失时调用

    viewDidDisappear

    界面消失后调用。

    因为此时界面的布局相当于发生了变化,viewWillLayoutSubviews和viewDidLayoutSubviews也将在他们之间调用。

    相关文章

      网友评论

          本文标题:浅谈ViewController的生命周期

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