浅谈ViewController的生命周期

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的生命周期)