viewController生命周期:
20130614155652265.jpeg
-ps:圖片源自網(wǎng)絡(luò)
view的加載順序知識點:
1啰挪,控制器的view是延遲加載的次坡,用到時再加載
2汉规,可用isViewLoaded方法來判斷一個控制器的view是否已經(jīng)被加載
3,控制器的view加載后就會調(diào)用viewDidload
-注意:如果沒有指定nibName流礁,而且沒有重寫控制器的loadVIew渠欺,控制器的類名必須以Controller結(jié)尾,才會去找XXXview.xib椎眯,接著找XXXController.xib
調(diào)用順序
loadView->viewDidLoad->viewWillAppear->viewDidAppear->viewWillDisappear->viewDidDisappear ->didReceiveMemeoryWarining->viewWillUnload->viewDidUnload
1挠将、有l(wèi)oadView方法,就加載loadView里的視圖view编整,這個方法就是用來自定義視圖的舔稀。PS:在這個方法中不得使用view的getter方法,但是可以使用setter方法掌测,因為view也是用到時才加載的内贮,所以用getter會重新調(diào)用這個loadView造成死循環(huán)。
- (void)loadView
{
//[super loadView];自定義view時不要調(diào)用這個方法
UIView *myView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
myView.backgroundColor = [UIColor purpleColor];
//myView.frame = self.view.frame;不可這樣寫
self.view = vcView;
}
2、如果子類沒有實現(xiàn)loadView夜郁,在創(chuàng)建控制器時什燕,分兩種創(chuàng)建方法:
- 2.1、如果是從storyboard加載控制器的竞端,則按storyboard的描述創(chuàng)建控制器的view屎即。
- 2.2 如果是從xib中加載控制器,使用initWithNibName來創(chuàng)建控制器事富,系統(tǒng)根據(jù)xib名字去尋找相應(yīng)的xib來創(chuàng)建控制器view(如果用init創(chuàng)建控制器技俐,它也會在底部先調(diào)用initWithNibName方法的)。
3统台、如果指定的xib不存在則crash雕擂,若沒有指定xib,即加載xib為nil贱勃,此時的順序如下:
- 3.1井赌、若指定了xib的名稱,則加載相應(yīng)xib里面的view募寨。
- 3.2族展、若沒有指定xib的名稱,則加載與控制器名稱前綴相同的xib視圖拔鹰,如控制器名稱是DyViewController仪缸,那么加載DyView.xib文件里的view視圖。
- 3.3列肢、若沒有叫DyView的xib文件恰画,則加載與控制器同名的xib里的視圖,即加載DyViewController.xib里的view瓷马。
- 3.4拴还、若都沒有,則加載個空白view欧聘,它的背景色是clearColor片林,幾乎透明的,可以看到view下面的控件怀骤,但它又不是透明的费封,如果加一個控件在window上是無法點擊的。
alpha:0-0.01蒋伦,完全透明弓摘,可以穿透
alpha:0.01-1.0,不能穿透
推薦一篇比較介紹的比較完整的:
鏈接http://www.reibang.com/p/23a83706d773