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教程視圖的繪製與視圖控制器和視圖 

相關文章
相關標籤/搜索