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")
-
}
-
……
- }
-
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教程檢視的生命週期
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-2129272/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOS10 UI教程檢視的中心位置iOSUI
- iOS10 UI教程檢視除錯iOSUI除錯
- 檢視與檢視控制器生命週期
- Flutter檢視Widget生命週期Flutter
- iOS10 UI教程檢視的邊界與檢視的框架iOSUI框架
- iOS10 UI教程檢視和子檢視的可見性iOSUI
- iOS 檢視控制器的生命週期iOS
- iOS10 UI教程檢視的幾何形狀iOSUI
- iOS10 UI教程檢視的繪製與檢視控制器和檢視iOSUI
- iOS10 UI教程子檢視和父檢視UI層次結構和Views繼承iOSUIView繼承
- iOS10 UI教程基改變檢視的外觀與檢視的可見性iOSUI
- iOS10 UI教程禁用檢視與使用者的互動iOSUI
- SAP UI5 檢視控制器 View Controller 的生命週期方法 - Lifecycle methodsUIViewController
- Servlet基礎教程之生命週期Servlet
- View生命週期與Activity生命週期的關係View
- Spring教程-Spring Bean的生命週期SpringBean
- 生命週期
- Omi教程-生命週期和事件處理事件
- Flutter 的生命週期Flutter
- SQL的生命週期SQL
- Laravel的生命週期Laravel
- vue的生命週期Vue
- Fragment的生命週期Fragment
- App的生命週期APP
- View的生命週期View
- Servlet的生命週期Servlet
- bean的生命週期Bean
- Rust 程式設計視訊教程(進階)——004_4 方法定義中的生命週期註解和靜態生命週期Rust程式設計
- PHP 生命週期PHP
- Flutter - 生命週期Flutter
- sessionStorag 生命週期Session
- Fragment生命週期Fragment
- Activity生命週期
- vue - 生命週期Vue
- React生命週期React
- ubuntu生命週期Ubuntu
- React 生命週期React
- vue生命週期Vue