zoukankan      html  css  js  c++  java
  • 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-12:LifeCycle】以下将使用代码说明视图的生命周期中方法的执行顺序。具体的操作步骤如下:

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

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

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

    import UIKit
    
    class ViewController: UIViewController {
    
        //载入完成
    
        override func viewDidLoad() {
    
            super.viewDidLoad()
    
            // Do any additional setup after loading the view, typically from a nib.
    
             print("viewDidLoad")
    
    }
    
    //轻拍按钮,移除视图控制器的视图
    
        @IBAction func removeView(_ sender: AnyObject) {
    
             view.removeFromSuperview()
    
    }
    
    //载入视图
    
        override func loadView() {
    
            super.loadView()
    
            print("LoadView")
    
    }
    
    //视图将出现在屏幕之前
    
        override func viewWillAppear(_ animated: Bool) {
    
            super.viewWillAppear(true)
    
            print("viewWillAppear")
    
    }
    
    //视图已在屏幕上渲染完成
    
        override func viewDidAppear(_ animated: Bool) {
    
            super.viewDidAppear(true)
    
            print("viewDidAppear")
    
    }
    
    //即将开始子视图位置布局
    
        override func viewWillLayoutSubviews() {
    
            super.viewWillLayoutSubviews()
    
            print("viewWillLayoutSubviews")
    
    }
    
    //视图的位置布局已经完成
    
        override func viewDidLayoutSubviews() {
    
            super.viewDidLayoutSubviews()
    
            print("viewDidLayoutSubviews")
    
    }
    
    //视图即将消失
    
        override func viewWillDisappear(_ animated: Bool) {
    
            super.viewWillDisappear(true)
    
            print("viewWillDisappear")
    
    }
    
    //视图已经消失
    
        override func viewDidDisappear(_ animated: Bool) {
    
            super.viewDidDisappear(true)
    
            print("viewDidDisappear")
    
        }
    
    ……
    
    }
    

      

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

    LoadView
    
    viewDidLoad
    
    viewWillAppear
    
    viewWillLayoutSubviews
    
    viewDidLayoutSubviews
    
    viewDidAppear
    

      

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

    viewWillDisappear
    
    viewDidDisappear
    

      

     

    图1.30  初始状态                           图1.31  移除主视图

    iOS10 UI教程视图的生命周期

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

  • 相关阅读:
    innodb存储引擎监控
    Oracle 11g DATAGUARD 同步延时监控脚本
    查看表空间的增长情况
    linux上下键,rlwrap来解决
    命令模式彻底删除oracle实例
    oracle 11g 静默安装
    oracle表空间相关统计查询
    11gr2 alert日志中报TNS-12535 TNS-00505原因及解决方法
    ORACLE EXPIRED(GRACE)
    清理监听日志处理的方法
  • 原文地址:https://www.cnblogs.com/daxueba-ITdaren/p/6112592.html
Copyright © 2011-2022 走看看