iOS10 UI教程视图的生命周期

iOS10 UI教程视图的生命周期

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

表1-5  方法介绍app

方法ide

功能布局

loadView()spa

载入视图,一般这一步不须要去干涉。.net

viewDidLoad()code

载入完成,能够进行自定义数据以及动态建立其余控件blog

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教程视图的绘制与视图控制器和视图 

相关文章
相关标签/搜索