ios開ViewController的生命週期分析和使用

來源:互聯網
上載者:User

ViewController載入View


從Storyboards中載入的時候,會調用initWithCode,如果不存在則調用init。之後對裡面的每個對象調用awakeFromNib方法。

從記憶體中alloc出來的情況下,調init方法。

ViewController尋找與其關聯的view,其順序是:

先判斷子類是否重寫了loadView,如果有直接調用。之後調viewDidLoad完成View的載入。

如果是外部通過調用initWithNibName:bundle指定nib檔案名稱的話,ViewController記載此nib來建立View。

如果initWithNibName:bundle的name參數為nil,則ViewController會通過以下兩個步驟找到與其關聯的nib。

如果類名包含Controller,例如ViewController的類名是MyViewController,則尋找是否存在MyView.nib;

找跟ViewController類名一樣的檔案,例如MyViewController,則尋找是否存在MyViewController.nib。

如果子類沒有重寫的loadView,則ViewController會從StroyBoards中找或者調用其預設的loadView,預設的loadView返回一個空白的UIView對象。

注意第一步

ViewController是判斷子類是否重寫了loadView,而不是判斷調用子類的loadView之後ViewController的View是否為空白。就是說,如果子類重寫了loadView的話,不管子類在loadView裡面能否擷取到View,ViewController都會直接調viewDidLoad完成View的載入。


ViewController生命週期函數

啟動順序

initWithCoder

如果不存在則調用init

loadView //如果說你進行了重寫,會在這裡調用,這一步可以參考下文


viewDidLoad

view剛被load完,且已經串連到IBoutlet後,這裡放置需要放到初始化裡去完成事情。[此時view還沒有被顯示]

viewWillAppear

當view即將被顯示時調用。

他適合做兩種事情:

1.最後時刻載入一些高開銷的操作

2.修改幾何特性

說明:

[如果需要調整view的幾何特性[旋轉之後 變化之類的巴拉巴拉] 在這裡書寫]。

如果是長時間的操作 則最好在此開個現成操作。

viewWillLayoutSubviews

即將

viewDidLayoutSubviews

view的子view的frame變化時[如:旋轉螢幕]

經常用此方法[did]來處理旋轉後的布局問題。

viewDidAppear

剛顯示

查看原圖

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.