- 前言
做開發(fā)也有蠻長的時間了陕贮,記得剛?cè)胄械臅r候不管寫什么都是純代碼棋弥,從來都不會用Xib拖一個控件,更別說什么storyboard了。后來發(fā)現(xiàn)身邊的同事都在用XIB寫界面蝉娜,每次我費了半天寫出來的界面他兩個小時就搞完了,而且適配也很完美晾蜘。慢慢的就開始試著使用XIB和storyboard了樊诺。
用了XIB和storyboard一段時間后,發(fā)現(xiàn)人是越來越懶了鹅巍,哪怕一個非常簡單的界面控件啥的都不愿意多寫一句代碼了千扶,直接XIB。但是遇到一個很尷尬的問題骆捧,就是用XIB去自定義一個視圖時澎羞,在另外一個XIB上用的時候,單單繼承是完全沒有用的敛苇,最后還得用代碼去創(chuàng)建妆绞。為此很是苦惱。
后來參考了好多網(wǎng)上的資料搞定了。為了后學者節(jié)約時間括饶,特發(fā)此文株茶。
- 詳細步驟如下
1.創(chuàng)建一個即成UIView的類
2.創(chuàng)建一個同名的XIB文件
3.在XIB中自定義你的視圖以及控件,將控件自定義成你想要的樣子
4.設(shè)置XIB的File's Owner 的Class為你創(chuàng)建的那個類
5.將xib中的View拖拽關(guān)聯(lián)成你創(chuàng)建的那個類的成員變量取名view
6.在創(chuàng)建的類.m文件重寫如下方法
/**
XIB創(chuàng)建會掉用
*/
- (instancetype)initWithCoder:(NSCoder *)coder{
self = [super initWithCoder:coder];
if (self) {
[self setUI];
}
return self;
}
/**
代碼創(chuàng)建會掉用
*/
- (instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
[self setUI];
}
return self;
}
/**
初始化
*/
- (void)setUI{
[[NSBundle mainBundle]loadNibNamed:NSStringFromClass([self class]) owner:self options:nil];
[self addSubview:self.view];
}
/**
自動適配大小
*/
- (void)drawRect:(CGRect)rect{
self.view.frame = self.bounds;
}
7.使用
XIB直接拖拽一個View然后即成你自定義的類就好了
代碼創(chuàng)建
CustomXibView *view = [[CustomXibView alloc] initWithFrame:CGRectMake(0, 0, 300, 100)];