?1. View的生命周期:
當第一次加載到內存:
加載view(loadView)-->view加載完畢(viewDidLoad)
當加載完成后開始展示布局:
控制器View將要顯示(viewWillAppear)-->控制器View將要布局控件(viewWillLayoutSubViews)-->控制器view完成布局控件(viewDidLayoutSubviews)-->view已經顯示(viewDidAppear)-->view即將消失(viewWillDisappear)-->view完全消失(viewDidDisappear)
2.View的加載:
View屬性被訪問時,
如果存在-------->
返回View
如果不存在-------->
loadView----->有自定義方法生成view,生成view
? ? ? ? ? ? ? ? ?----->沒有自定義生成的view,通過xib和Story創建,得到View
? ? ? ? ? ? ? ? ??----->如果都沒,返回empty View
3.view的布局,UIView通過layoutSubViews方法進行處理的
需要注意的時layoutSubViews方法由系統來調用,不能程序員來調用。可以調用setNeedsLayout方法進行標記,以保證在UI下個刷屏系統中會調用layoutSubviews。或者layoutIfNedded直接請求系統調用layoutIfNeeded直接請求系統調用layoutSubviews。
layoutSubViews的被調用時機:
1.addSubView會觸發layoutSubviews,比如ivewA add ViewB,第一次添加A和B的layoutSubviews都會被調用,而第二次( viewA 已經有了viewB)只調用viewB的。
2.view的frame改變會觸發layoutSubViews。
3.滾動一個UIScrollView會觸發layoutSubviews。
4.旋轉Screen會觸發UIView的layoutSubviews。
5.改變transform屬性時,當然frame也會變。
6.處于key window的UIView才會被調用( 程序同一時間只有一個window為keyWindow,可以簡單理解為顯示在最前面的window的keywindow)