xib和storyboard對比
-
共同點(diǎn)
- 都用來描述軟件界面
- 都用interface Buidler工具來編輯
- 本質(zhì)都是轉(zhuǎn)換成代碼去創(chuàng)建控件
-
不同點(diǎn)
- xib是輕量級的,用來描述局部的UI界面
- Storyboard是重量級的蹂喻,用來描述整個(gè)軟件的多個(gè)界面哄陶,并且能展示多個(gè)界面之間的跳轉(zhuǎn)關(guān)系
xib的加載
UIView *shopView = [[[NSBundle mainBundle] loadNibNamed:@"xib名稱" owner:nil options:nil] lastObject];
//bundle作為參數(shù)的時(shí)候锹安,傳遞nil就相當(dāng)于mainBundle
UINib *nib = [UINib nibWithNibName:@"xib名稱" bundle:nil];
UIView *shopView = [[nib instantiateWithOwner:nil options:nil] lastObject];
//在xib關(guān)聯(lián)的類中,xib名稱可以使用下面的代碼代替(前提是xib名稱和關(guān)聯(lián)的類的名稱相同)
NSStringFromClass(self)
自定義控件的注意點(diǎn)
一個(gè)控件有兩種創(chuàng)建方式
-
通過代碼創(chuàng)建
- 初始化時(shí)一定會調(diào)用initWithFrame:方法
-
通過xib\Storyboard創(chuàng)建
- 初始化時(shí)不會調(diào)用initWithFrame:方法匙奴,只會調(diào)用initWithCoder:方法
- 初始化完畢后會調(diào)用awakeFromNib方法