1.xib與storyBoard區(qū)別
Xib是輕量級(jí)的届吁,用來(lái)描述局部的UI界面
Storyboard是重量級(jí)的吗货,用來(lái)描述整個(gè)軟件的多個(gè)界面立轧,并且能展示多個(gè)界面之間的跳轉(zhuǎn)關(guān)系
2.Xib的加載方式
方式一:通過(guò)mainBundel loadNibNamed:加載
NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"xib文件名" owner:nil options:nil]
方式二:通過(guò)UINib? nibWithNibName加載
UINib *nib = [UINib nibWithNibName:@"xib文件名" bundle:nil];
NSArray *views = [nib instantiateWithOwner:nil options:nil];
3.通過(guò)xib創(chuàng)建自定義控件步驟
1)新建一個(gè)繼承UIView的類
2)新建一個(gè)xib文件(xib的文件名最好跟控件類名一樣)
3)添加子控件尘执、設(shè)置子控件屬性
4)修改最外面那個(gè)控件的class為控件類名
5)將子控件進(jìn)行連線
6)提供模型屬性鹃祖,重寫模型的set方法
7)在set方法中給子控件設(shè)置數(shù)據(jù)
4.initWithcoder溪椎、awakeFromNib與layoutSubviews
1)initWithcoder
1.1 只要是從storyboard/xib中加載就會(huì)調(diào)用這個(gè)方法;
1.2 這個(gè)方法一般是初始化的操作恬口;
1.3 在init方法內(nèi)只管控件內(nèi)部的創(chuàng)建校读,但不管frame的初始化,因?yàn)橥饨缯{(diào)用的init方法不一定馬上給frame賦值祖能,所以第一次init是frame的值可能為nil歉秫;
2)awakeFromNib
storyboard/xib中加載完畢的時(shí)候調(diào)用,想做一些在xib加載完畢的操作养铸,就在這個(gè)方法中操作(建議在這個(gè)方法中寫初始化代碼)
3)layoutSubviews
重寫系統(tǒng)的-(void)layoutSubviews方法,這個(gè)方法方法專門用來(lái)布局子控件雁芙,一般在這里設(shè)置子控件的frame,當(dāng)控件本身的尺寸發(fā)生改變的時(shí)候钞螟,系統(tǒng)會(huì)自動(dòng)調(diào)用這個(gè)方法兔甘。重寫此方法內(nèi)一定要調(diào)用[super layoutSubviews]