iOS10 UI教程视图的生命周期

iOS10 UI教程视图的生命周期

说到视图的生命周期一般都是指视图控制器的视图生命周期。在视图的声明周期中最主要的有8个方法,分别为loadView()viewDidLoad()viewWillAppear(_:)viewWillLayoutSubviews()viewDidLayoutSubviews()viewDidAppear(_:)viewWillDisappear(_:)viewDidDisappear(_:),对于这几个方法的说明如表1-5所示。视图的生命周期的流程以及这些方法的调用时机如图1.29所示。

1-5  方法介绍

方法

功能

loadView()

载入视图,通常这一步不需要去干涉。

viewDidLoad()

载入完成,可以进行自定义数据以及动态创建其他控件

viewWillAppear(_:)

视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了

viewWillLayoutSubviews()

即将开始子视图位置布局

viewDidLayoutSubviews()

用于通知视图的位置布局已经完成

viewDidAppear(_:)

视图已在屏幕上渲染完成

viewWillDisappear(_:)

视图即将消失

viewDidDisappear(_:)

视图已经消失


1.29  生命周期

注意:在图中给出了这些方法的调用顺序,当然需要注意这几个方法的调用是由iOS系统决定的,不需要读者自己调用。

【示例1-12LifeCycle】以下将使用代码说明视图的生命周期中方法的执行顺序。具体的操作步骤如下:

1打开Main.storyboard文件,从视图库中拖动Button按钮控件到主视图中,将Button的标题改为“移除视图”。

2Button按钮控件进行动作removeView的声明和关联。

3打开ViewController.swift文件,编写代码,通过输出语句查看视图生命周期中方法的顺序。代码如下:


  1. import UIKit
  2. class ViewController: UIViewController {
  3.     //载入完成
  4.     override func viewDidLoad() {
  5.         super.viewDidLoad()
  6.         // Do any additional setup after loading the view, typically from a nib.
  7.          print("viewDidLoad")
  8. }
  9. //轻拍按钮,移除视图控制器的视图
  10.     @IBAction func removeView(_ sender: AnyObject) {
  11.          view.removeFromSuperview()
  12. }
  13. //载入视图
  14.     override func loadView() {
  15.         super.loadView()
  16.         print("LoadView")
  17. }
  18. //视图将出现在屏幕之前
  19.     override func viewWillAppear(_ animated: Bool) {
  20.         super.viewWillAppear(true)
  21.         print("viewWillAppear")
  22. }
  23. //视图已在屏幕上渲染完成
  24.     override func viewDidAppear(_ animated: Bool) {
  25.         super.viewDidAppear(true)
  26.         print("viewDidAppear")
  27. }
  28. //即将开始子视图位置布局
  29.     override func viewWillLayoutSubviews() {
  30.         super.viewWillLayoutSubviews()
  31.         print("viewWillLayoutSubviews")
  32. }
  33. //视图的位置布局已经完成
  34.     override func viewDidLayoutSubviews() {
  35.         super.viewDidLayoutSubviews()
  36.         print("viewDidLayoutSubviews")
  37. }
  38. //视图即将消失
  39.     override func viewWillDisappear(_ animated: Bool) {
  40.         super.viewWillDisappear(true)
  41.         print("viewWillDisappear")
  42. }
  43. //视图已经消失
  44.     override func viewDidDisappear(_ animated: Bool) {
  45.         super.viewDidDisappear(true)
  46.         print("viewDidDisappear")
  47.     }
  48. ……
  49. }


  1. import UIKit
  2. class ViewController: UIViewController {
  3.     //载入完成
  4.     override func viewDidLoad() {
  5.         super.viewDidLoad()
  6.         // Do any additional setup after loading the view, typically from a nib.
  7.          print("viewDidLoad")
  8. }
  9. //轻拍按钮,移除视图控制器的视图
  10.     @IBAction func removeView(_ sender: AnyObject) {
  11.          view.removeFromSuperview()
  12. }
  13. //载入视图
  14.     override func loadView() {
  15.         super.loadView()
  16.         print("LoadView")
  17. }
  18. //视图将出现在屏幕之前
  19.     override func viewWillAppear(_ animated: Bool) {
  20.         super.viewWillAppear(true)
  21.         print("viewWillAppear")
  22. }
  23. //视图已在屏幕上渲染完成
  24.     override func viewDidAppear(_ animated: Bool) {
  25.         super.viewDidAppear(true)
  26.         print("viewDidAppear")
  27. }
  28. //即将开始子视图位置布局
  29.     override func viewWillLayoutSubviews() {
  30.         super.viewWillLayoutSubviews()
  31.         print("viewWillLayoutSubviews")
  32. }
  33. //视图的位置布局已经完成
  34.     override func viewDidLayoutSubviews() {
  35.         super.viewDidLayoutSubviews()
  36.         print("viewDidLayoutSubviews")
  37. }
  38. //视图即将消失
  39.     override func viewWillDisappear(_ animated: Bool) {
  40.         super.viewWillDisappear(true)
  41.         print("viewWillDisappear")
  42. }
  43. //视图已经消失
  44.     override func viewDidDisappear(_ animated: Bool) {
  45.         super.viewDidDisappear(true)
  46.         print("viewDidDisappear")
  47.     }
  48. ……
  49. }

此时运行程序,会看到如图1.30所示的效果。不仅如此,还会在应用程序输出窗口输出以下内容:


  1. LoadView
  2. viewDidLoad
  3. viewWillAppear
  4. viewWillLayoutSubviews
  5. viewDidLayoutSubviews
  6. viewDidAppear

当开发者轻拍“移除视图”按钮后,会看到视图控制器的主视图被移除,如图1.31所示。不仅如此,还会在应用程序输出窗口输出以下内容:


  1. viewWillDisappear
  2. viewDidDisappear


1.30  初始状态                           1.31  移除主视图

iOS10 UI教程视图的生命周期

相关阅读:iOS10 UI教程视图的绘制与视图控制器和视图 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29597077/viewspace-2129272/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29597077/viewspace-2129272/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值