Storyboard是iOS SDK5.0開(kāi)始的新寵,記得當(dāng)時(shí)大家對(duì)使用純代碼、xib文件以及新出現(xiàn)的Storyboard討論非常激烈,如同當(dāng)時(shí)ARC與非ARC一般。
對(duì)于Storyboard是否好用,只能說(shuō)仁者見(jiàn)仁智者見(jiàn)智,畢竟只是一個(gè)工具,與每個(gè)人/團(tuán)隊(duì)的編碼習(xí)慣有關(guān)。
Storyboard使用也有一段時(shí)間了,目前并沒(méi)有發(fā)現(xiàn)太多的攔路虎,而且UIStoryboard類的API也非常簡(jiǎn)單,上手非常容易。
UIStoryboard
NS_CLASS_AVAILABLE_IOS(5_0) @interface UIStoryboard : NSObject {
}
+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil;
- (id)instantiateInitialViewController;
- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier;
+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil;
根據(jù)storyboard的名稱初始化
- (id)instantiateInitialViewController;
storyboard對(duì)象初始化成功后,調(diào)用該方法獲得該storyboard中的默認(rèn)第一個(gè)初始化的視圖控制器,如果是后來(lái)自己新建的UIStoryboard,要記住在 attributes inspector中將 Is Initial View Controller選項(xiàng)勾上
- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier;
與上個(gè)方法類似,不過(guò)是根據(jù)identifier獲取storyboard中的視圖控制器對(duì)象。同樣,需要在storyboard中預(yù)先將視圖控制器的identifier設(shè)置好
storyboard除了快速開(kāi)發(fā)視圖之外,還有兩個(gè)特色功能是非常棒的
界面關(guān)系流圖
storyboard與xib不一樣的是,它是一個(gè)視圖控制器的集合,在storyboard中存在的多個(gè)控制器,這些控制器之間又有相互的聯(lián)系,在storyboard中可以清晰的體現(xiàn)每一個(gè)控制器之間的聯(lián)系
視圖容器的使用
視圖容器這個(gè)概念是只有storyboard中才有的,它非常貼合我們常說(shuō)的模塊化、功能化的概念,將視圖拆分從更小的單元來(lái)編輯。當(dāng)然這些不是說(shuō)一定需要storyboard才能實(shí)現(xiàn),通過(guò)代碼或者xib同樣可以達(dá)到模塊化、功能化效果,這三者本質(zhì)是一樣的,只是storyboard將這樣一個(gè)關(guān)系直接體現(xiàn)出來(lái),使程序更加一目了然。
storyboard該如何使用才能提高效率
1.按模塊拆分storyboard
在使用storyboard的時(shí)候,盡可能按照功能模塊區(qū)分,這樣每一個(gè)功能模塊有著獨(dú)自的storyboard,視圖之間的跳轉(zhuǎn)邏輯簡(jiǎn)單清晰,日后方便維護(hù)。切忌storyboard過(guò)于龐大,過(guò)多的視圖,不清晰的邏輯會(huì)把人看暈。
2.組件類功能
組建類功能按照功能的復(fù)雜度。單視圖的組件其實(shí)使用xib就可以完全勝任;涉及到多視圖的組件,還是建議單獨(dú)一個(gè)storyboard來(lái)做界面。storyboard與xib同樣都是資源文件,不用過(guò)于擔(dān)心因?yàn)檫^(guò)多的storyboard或者xib到處APP運(yùn)行速度變慢(APP速度慢,建議還是多排查網(wǎng)絡(luò)與數(shù)據(jù)加載這一塊)。