awakeFromNib
- awakeFromNib 從xib或者storyboard加載完畢就會調(diào)用
- initWithCoder: 只要對象是從文件解析來的斋枢,就會調(diào)用
- awakeFromNib和initWithCoder同時存在會先調(diào)用initWithCoder:
- initWithFrame:使用代碼加載的對象調(diào)用(使用純代碼創(chuàng)建)
nib 加載結(jié)構(gòu)時 發(fā)送一個awakeFromNib消息告訴每個對象重建一個nib 歸檔,但只有在所有的檔案中的對象已加載和初始化划鸽。當(dāng)一個對象接收awakefromnibmessage,這是保證其所有出口和行動連接已經(jīng)建立增显。
-(void)awakeFromNib;從字面上理解疗涉,就是從nib文件中喚醒對象,完成對每一個對象的實例化或與nib文件的關(guān)聯(lián)缸废。
需要注意的問題:
當(dāng)使用一個controller控制多個nib文件時包蓝,awakeFromNib方法會被多次調(diào)用。因此企量,當(dāng)不使用awakeFromNib方法來完成nib對象的初始化時测萎,需要注意此方法的多次調(diào)用對其他nib文件造成的影響
layoutSubview
layoutSubview :為該View添加子控件,設(shè)置frame值
layoutSubview的調(diào)用場景:
使用addSubview添加時會調(diào)用layoutSubView
設(shè)置視圖的父視圖的Size時會調(diào)用
改變視圖的frame的時候會被調(diào)用
滾動scrollview的時候會被調(diào)用
設(shè)備的orientation(方向)改變時,涉及改變的UIViewControl 的root view
(此時所有的控件被重新布局,相當(dāng)于A的frame被改變 那么會調(diào)用layoutSubview 而且如果控件有B的話會再調(diào)用一次layoutSubview)
調(diào)用setNeedsLayout時會被調(diào)用
layoutSubview不是在調(diào)用完比如addSubview等方法之后就馬上調(diào)用,而是會在調(diào)用addSubview方法所在的作用域結(jié)束之后之后才調(diào)用,因此即使你在同一個方法中既使用了addSubViews又更改了frame届巩,也是只會調(diào)用一次layoutSubview而已