UIViewController 生命週期

2021-09-11 14:57:46 字數 1085 閱讀 9007

uiviewcontroller 往往是 ios 頁面開發的基礎,使用者互動和資料展示都是由它來控制,了解了它的生命週期,就能做到:在合適的時機,做合適的事情

下面對 uiviewcontroller 的每個生命週期函式進行乙個列印,確定它們的執行順序。

@implementation

viewcontroller

- (void)loadview

- (void)viewdidload

- (void)viewwilllayoutsubviews

- (void)viewdidlayoutsubviews

@end

複製**

此時,控制器的 view 還未初始化,可以通過重寫這個方法自定義控制器的 view,如果這樣做,那就不能呼叫[super loadview](上面**呼叫是為了方便列印,不然螢幕就是黑的)。

在控制器的生命週期中,它只會被呼叫一次,此時,view 已經初始化好,非常適合做一些頁面的初始化任務。由於此時 view 的 bounds 尚未確定,所以不適合寫 frame 型別的布局**,但是給檢視新增約束沒有影響。

它會在控制器的檢視將要出現在螢幕中時被呼叫,在控制器生命週期中可能會被呼叫多次。在此處,適合做一些與檢視出現相關聯的任務,例如改變狀態列的方向、風格。

當 view 的子檢視即將布局時,此方法會被呼叫,觸發的條件是:

這個方法是寫 frame 布局**的好地方,將 view 的子檢視布局好,每次 view 大小發生改變時,其子檢視布局也會相應改變。

當 view 的子檢視已經布局時,此方法會被呼叫,觸發條件同上。

它會在控制器的檢視出現在螢幕後被呼叫,此時,view 的 bounds 已經確定,不過在這裡寫布局相關**,可能會反映到螢幕上。

檢視即將從螢幕中消失時觸發。

檢視從螢幕中消失後觸發。

1、上面測試**中,- viewwilllayoutsubviews方法列印了兩次?

答:因為 view 被新增到檢視層次中會觸發一次,view 的 bounds 改變還會觸發一次。

答:b。

uiviewcontroller的生命週期

uiviewcontroller是ios程式中的乙個重要組成部分,扮演者乙個大管家的身份,管理著程式中的眾多檢視 何時載入view,載入的原則是什麼,檢視何時消失等問題,文件中講的都很詳細。controller的view最好在需要顯示時再去載入,並且在系統發出記憶體警告時釋放不必要的view及相關的...

UIViewController的生命週期

uiviewcontroller的生命週期 1.uiviewcontroller uiviewcontroller是ios頂層檢視的載體及控制器,使用者與程式介面的互動都是由uiviewcontroller來控制的 uiviewcontroller管理uiview的生命週期及資源的載入與釋放 uiv...

UIViewController的生命週期

關於viewdidunload 在發生記憶體警告的時候如果本檢視不是當前螢幕上正在顯示的檢視的話,viewdidunload將會被執行,本檢視的所有子檢視將被銷毀,以釋放記憶體,此時開發者需要手動對viewload viewdidload中建立的物件釋放記憶體。因為當這個檢視再次顯示在螢幕上的時候,...