視圖控件器的view是懶加載的,用到才加載.
舉個例子:
①若在- application:didFinishLaunchingWithOptions:方法設(shè)置window根控制器vc,然后調(diào)用.
vc.view.backgroundColor = [UIColor redColor]; 設(shè)置vc背景色顏色
②在vc -loadView 設(shè)置定義view,并設(shè)置自定義view的backgroundColor為黃色.
③然后在viewDidLoad,設(shè)置self.view.backgroundColor為綠色.那個生效.
答案:是紅色.
解析: ①中vc.view 就會調(diào)用 ②中-loadView方法.然后調(diào)用③中viewDidLoad方法.這個方法是view加載完畢的時候調(diào)用.這個時候①才執(zhí)行了.view .background最后執(zhí)行,故顏色為紅色.
- loadView調(diào)用時機: 視圖第一次被加載的時候.
- 方法的目的是: 加載自定義的view.如view是imageView/WebView.起到節(jié)省內(nèi)存作用.
該方法是內(nèi)不能調(diào)用view的get方法,不然會引起死循環(huán),程序奔潰.
- 若沒有重新,自定義視圖加載順序是:
3.1 看視圖控制器是否在StoryBoard中設(shè)置控制器VC,并綁定view.若有,則從StoryBoard加載對應(yīng)的view.(StoryBoard一般是拖入控制器)
3.2 看視圖控制器是否在xib中(view設(shè)置了fileOwner),并指定了view.
,如有則從xib中加載指定的view.(xib中一般是拖入view)
3.3 都沒有的話,就創(chuàng)建了一個空白的view.(view的背景顏色是透明的,并不是view是透明的)
view是透明的,就無法進行交互(無法進行響應(yīng)事件), view的背景色是透明的就可以交互.
若本文對您有所幫助,請點個贊支持下.謝謝.