一般自定義View代碼方式
//1-在初始化的時(shí)候添加 子Views
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// add subviews
}
return self;
}
//2-還有種 是自己畫伴奥。 重載
- (void)drawRect:(CGRect)rect {
}
有些情況下,我們發(fā)現(xiàn)有一些界面上的控件是可以復(fù)用的撒强。
如果每次都拷貝這些控件過(guò)去禽捆,就是比較麻煩。所以飘哨,就用一個(gè)xib文件胚想,創(chuàng)建一個(gè)view,把要復(fù)用的控件芽隆,放在里面組成一個(gè)view浊服,然后在其他的ViewController里面引用就行了统屈。
這樣會(huì)方便很多。
第一步:創(chuàng)建一個(gè)SingleViewApplication牙躺,命名為“xib作為子控件復(fù)用”近速,在項(xiàng)目里New File,選擇Cocoa Touch Class慧起,命名為"AAView"疹吃,點(diǎn)擊Next,如圖1所示:
第二步:創(chuàng)建一個(gè)View乓搬,在項(xiàng)目里面New File思犁,選擇View,點(diǎn)擊Next进肯,如圖2所示激蹲。命名為”AAView“,點(diǎn)擊Create江掩,如圖3所示:
第三步:選中AAView.xib学辱,點(diǎn)擊View,更改Custom Class為“AAView”(即剛才所創(chuàng)建的AAView.h和AAView.m文件)环形,如圖4所示策泣。如果要修改View的大小,可以設(shè)置屬性Size為 “Freeform”抬吟。
第四步: 在View里面添加4個(gè)Label萨咕,修改Text,如圖5所示火本。為"小王"和"21"兩個(gè)Label添加Outlets危队,按住Control拖到AAView.h文件,分別命名钙畔,如圖6所示:
第五步:現(xiàn)在就是如何把這個(gè)View作為子控件加載到其他界面了茫陆,打開ViewController.m文件,把AAView.h” import進(jìn)來(lái)擎析,然后在ViewDidLoad里面寫入以下代碼:
AAView *aaView = [[[NSBundle mainBundle] loadNibNamed:@"AAView" owner:self options:nil] lastObject]; // lastObject 可改為 firstObject簿盅,該數(shù)組只有一個(gè)元素,寫哪個(gè)都行叔锐,看個(gè)人習(xí)慣挪鹏。
aaView.lbName.text = @"小明";
aaView.lbAge.text = @"25";
[self.view addSubview:aaView];
運(yùn)行程序,結(jié)果如圖7所示:
至此愉烙,可以看見姓名和年齡都改變了讨盒,成功完成把xib文件作為一個(gè)子控件使用。如果你覺得位置不滿意步责,可以更改創(chuàng)建的View的Frame屬性返顺,改變大小和位置禀苦。
有時(shí)候你有很多復(fù)雜的控件組成一個(gè)復(fù)雜的組件,然后進(jìn)行復(fù)用遂鹊,這就是一個(gè)很好的辦法振乏。