- 繼承自NSObject
- xib最終會轉變成nib文件
- 共同點:
- 都用來描述軟件界面
- 都用Interface Builder工具來編輯
- 本質都是轉換成代碼去創建控件
- 包括創建控件,加入視圖中,設置frame等基本屬性,拖線等功能
- 不同點
- Xib是輕量級的,用來描述局部的UI界面
- Storyboard是重量級的,用來描述整個軟件的多個界面,并且能展示多個界面之間的跳轉關系
xib加載控件
- 方法一:loadNibNamed
NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"xib文件名" owner:nil options:nil]
- 注意:上述方式取出的都是xib中控件數組,需要根據角標獲取對應控件
- [views firstObject],取出數組中的第一個元素,加載后的xib取出的是整個父控件。
- [views lastObject],取出數組中的最后一個元素,加載后的xib若只有一個父控件(子控件不算),也能取出父控件,否則不是取出父控件。
xib加載控制器
自動拉伸問題
- 從xib中加載進來的控件的autoresizingMask屬性值默認是
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight
UINib的其他方法
// bundleOrNil若為nil,則默認是mainBundle
+ (UINib *)nibWithData:(NSData *)data bundle:(nullable NSBundle *)bundleOrNil;