跟着斯坦福白胡子老头学UIViewController的生命周期

         Swift3.0的所有界面都是由storyboard和UIViewController派生类组成的,  UIViewController在MVC模式里的作用是Controller。 如果要跟Android对比的话, 它类似于Activity和Fragment。 建议类成员变量在viewDidLoad函数里赋值,而不是在init构造函数里; 因为在viewDidLoad函数里所有的控件outlet已经赋值了。

       要测试界面切换的生命周期, 首先要搞明白Swift有3种界面切换方式, 即UITabBarController(界面底部是切换按钮区),UISlpliteViewControlle(适用于iPad,左边Menu右边操作区)和UINavigationController(界面顶部是切换按钮区)。 下面以Tab页为例:

跟着斯坦福白胡子老头学UIViewController的生命周期_第1张图片
设置UITabBarController


跟着斯坦福白胡子老头学UIViewController的生命周期_第2张图片
UITabBarController效果


在设置多界面时可能会删掉storyboard的入口(即第一个打开的界面, 类似于AndroidManifest的Launcher属性), 你需要再添加那个箭头,即选中“is initial View Controller”

设置storyboard入口

显示界面:

Controller1: awakeFromNib

Controller1: viewDidLoad  (在该函数做Model的初始化,作用类似于Android Activity的onCreate函数)

Controller1: viewWillApear animated: true

Controller1: viewWillLayoutSubView

Controller1: viewDidLayoutSubViews

Controller1: viewDidAppear animate: true

退出界面:

Controller1: viewWillDisappear animated: true

Controller1: viewDidDisappear animated: true  (在该函数或deinit函数里释放内存,不能是耗时操作。作用类似于Android Activity的onDestory函数)

手机横竖屏切换(模拟器用 Command和←或者→ 切换),注意执行了2次WillLayou/DidLayou。有点像Android切换横竖屏时执行2次Activity的创建生命周期。

Controller1: viewWillTransition  (横竖屏切换执行,参数里有屏幕宽和高)

Controller1: viewWillLayoutSubView

Controller1: viewDidLayoutSubViews

Controller1: viewWillLayoutSubView

Controller1: viewDidLayoutSubView

生命周期很简单, 但很基础。 想想做Android几年的同学都记不住Fragment的生命周期, 还是要夯实基础!

你可能感兴趣的:(跟着斯坦福白胡子老头学UIViewController的生命周期)