iOS10 UI教程檢視的生命週期

大學霸發表於2016-11-29

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章