天天看點

iOS7應用開發5、視圖控制器View Controller及其生命周期

1、UITextView:

該類與Label類類似,可顯示多行,可以編輯内容,可以滾動檢視内容;

包含屬性NSTextStorage *textStorage,該類是NSMutableAttributedString的基類;修改該屬性可以自動更新UITextView的内容;

包含屬性UIFont *font,用于設定所有字元的字型;

NSTextContainer *textContainer和NSLayoutManager *layoutManager屬性,用于設定文本的其他一些屬性;

2、視圖控制器的生命周期

* 建立:通過storyboard或者代碼建立MVC;

* 設定顯示視圖接口(outlet)、幾何變化、視圖的顯示和消失等操作;

* 随後調用viewDidLoad,可以進行下一步的初始化操作;隻會被調用一次;注意不要再這裡設定與界面尺寸相關的設定;

* 在視圖顯示之前調用viewWillAppear;該函數可以多次調用;

* 視圖消失之前調用viewWillDisappear;處理儲存目前視圖的一些資訊(如需要);

* 在布局變化前後,調用viewWill/DidLayoutSubviews處理相關資訊;

* 自動旋轉:shouldAutorotate傳回yes,supportedInterfaceOrientations傳回支援的方向;

* 記憶體不足警告時,調動didReceiveMemoryWarning進行處理,如釋放掉目前沒有顯示的視圖,将強引用對象設為nil等;

進一步讨論:

UIViewController繼承自UIResponder,控制資料和視圖的顯示等操作。在建立ViewController的時候調用init方法的時候,在調用[super init]的時候自然會調用initWithNib方法;在建立視圖控制器的時候,首先會判斷目前視圖控制器中是否存在視圖;如果不存在,則會調用loadView方法;在該方法中進行判斷視圖産生的方法:自定義、storyboard還是空視圖,在此之前,目前ViewController的視圖還是nil;而當自定義視圖、從storyboard中裝載視圖或者生産空視圖完成後,ViewController便有其具體的值了。下圖就是大緻流程:

iOS7應用開發5、視圖控制器View Controller及其生命周期

如果視圖控制器的view尚不存在,那麼在調用其getter方法的時候會調用loadView方法(注意,不應該直接在代碼中調用loadview方法,而應覆寫該方法實作自己的内容);覆寫該方法的時候必須要自己建立視圖供viewcontroller顯示,或者調用[super loadView];

3、通知NSNotification

* 擷取預設通知中心 :[NSNotificationCenter defaultCenter];

* 對某通知添加響應:addObserver: selector: name: object:;

* 關閉通知觀察者:removeObserver;