有沒有這種需求,自定一個panel,裏面放了好幾個控件,在多個頁面用到這個panel。
解決這個問題有三條思路:
1.自己繼承UIView寫一個類,在這裏面以代碼的形式添加需要的控件,完成佈局。
2.使用XIB佈局文件完成佈局
3.使用storyboard完成佈局
在這三中方式中,1顯得高端大氣上檔次,嘩啦嘩啦敲半天。雖然我是技術控,但是也很反感這純粹的情懷。
3以UIViewController滿足不了我的需要,用起來不太方便。(也可能很好用,我不會用,求指點)
所以就講解一下XIB如何自己組合實現控件,而且在這裏也不講前因後果的,循序漸進的搞半天,搞得頭都暈,直接上最終用法。
用發分爲一下三步:
1.新建一個繼承自NSObject的類,用來存放自定義的XIB中的UIView。
a.爲了方便這個類中添加一個類方法
+ (id)viewFromNibByName:(NSString *)name{
FileOwner2* owner = [FileOwner2 new];
[[NSBundle mainBundle] loadNibNamed:name owner:owner options:nil];
return owner.view;
}
2.新建一個XIB文件。
a.設置一下XIB的大小尺寸,如圖:
b.設置XIB的FileOwner爲1中新建的類。
c.將View與FileOwner建立關聯,這樣FileOwner可以對其進行操作。
3.在其他文件使用
//加載View5
UIView* view5 = [FileOwner2 viewFromNibByName:@"View5"];
[view5 setFrame:CGRectMake(0, 400, 375, 100)];
[self.view addSubview:view5];
總結:可以多個XIB公用一個FileOwner這樣,可以通過一個FileOwner的靜態方法通過名字不同來新建出不同的panel了。