在iOS開發(fā)中瓮孙,storyboard就想一個(gè)空的畫板坊秸,讓程序員可以在上邊直接的繪制需要的UI界面麸祷。迅速的搭建起整個(gè)應(yīng)用的框架,可謂用著不所謂不爽褒搔。但是經(jīng)驗(yàn)老道的程序員往往基本上甚至根本就不用storyboard這個(gè)玩意阶牍。why喷面?
- storyboard對(duì)應(yīng)小白上手非常迅速,方便理解整個(gè)程序的流程走孽。作為一個(gè)大牛自己一個(gè)人都可以搞定所有惧辈,程序的流程本身就非常清楚。
- storyboard對(duì)于多人開發(fā)來說就是一個(gè)悲劇磕瓷,隨便只要打開storyboard文件盒齿,你甚至沒有做做任何的修改就有提示代碼變更需要提交代碼。多人代碼合并的時(shí)候根本就沒有辦法困食。
- storyboard個(gè)人感覺只是xib的升級(jí)边翁,他可以將多個(gè)xib的內(nèi)容放在一個(gè)storyboard中。將分散的模塊集中硕盹。xib一般我們都在自定義控件的時(shí)候使用倒彰,xib此時(shí)應(yīng)該是和view相對(duì)應(yīng)。而storyboard感覺就和控制器連接在一起的莱睁。在MVC的框架中待讳,本身控制器就很容易產(chǎn)生臃腫,我們?cè)俑鞣N線滿天飛仰剿,非常不利于代碼的重構(gòu)创淡。
- storyboard另外一個(gè)不好的地方就是在app中如果使用轉(zhuǎn)場(chǎng)動(dòng)畫,就肯定不能夠使用storyboard了南吮。app中頁面的跳轉(zhuǎn)我們需要自己控制琳彩,而storyboard無疑將這一切的可能都給封閉死了。
- storyboard搭建UI快部凑,但是你扛不住產(chǎn)品經(jīng)理的腦子抽筋快露乏,今天界面中某個(gè)模塊,明天告訴你又需要修改成另外一個(gè)樣子涂邀,此時(shí)我能想象到你在storyboard中邊更新或者刪除各種約束邊罵產(chǎn)品那個(gè)傻逼的樣子瘟仿。同時(shí)storyboard里面布局還是不一定能滿足產(chǎn)品那個(gè)極品無敵像素眼的需求,你還必須在代碼中對(duì)某些控件或者約束進(jìn)行精確的計(jì)算比勉。而純代碼方式你只需要重寫代碼即可劳较。同時(shí)使用storyboard產(chǎn)品看到你在一個(gè)圖形化的界面中修修改改就實(shí)現(xiàn)了他的需求,想當(dāng)然的認(rèn)為修改一個(gè)需求非常簡(jiǎn)單浩聋。然后观蜗,然后你懂得......
- 還有一種說法是通過 Storyboard 創(chuàng)建視圖對(duì)象時(shí),其資源消耗會(huì)比直接通過代碼創(chuàng)建對(duì)象要大非常多衣洁,在性能敏感的界面里墓捻,Storyboard 并不是一個(gè)好的技術(shù)選擇。
至此我覺得我可以告別storyboard了坊夫。然而蘋果也發(fā)現(xiàn)了這個(gè)問題砖第,為此在iOS9中給我們又提供了一個(gè)新的解決方案撤卢,storyboard reference控件。廢話不多少厂画,直接上圖
storyboard reference為我們多人模塊化開發(fā)提供了可能凸丸。
具體的詳情請(qǐng)看這里,這篇文章已經(jīng)講的很清晰了袱院,我就不板門弄斧了屎慢。
總結(jié)
- 快速搭建模型
我個(gè)人對(duì)于storyboard傾向于在開發(fā)前期,快速的搭建起來整個(gè)app的原型忽洛,讓設(shè)計(jì)師能夠整體的體驗(yàn)app在當(dāng)前設(shè)計(jì)下的各種狀態(tài)腻惠,方便設(shè)計(jì)師快速的修改原型設(shè)計(jì)。這種帶實(shí)驗(yàn)性質(zhì)情況和我們使用playground快速的寫一些代碼來看執(zhí)行效果很像欲虚。 - 搭建基本框架
如果我們app的原型已經(jīng)固定下來集灌,我們可以使用storyboard搭建起來正app的框架。一般都是tab bar controller + navigation controller的組合复哆。這樣做首先每一個(gè)tab bar的controllers(controllers每一個(gè)模塊內(nèi)部都使用純代碼)每一個(gè)controllers就可以使用到storyboard reference控件來構(gòu)建成單獨(dú)的storyboard文件欣喧,然后分別的交給不同的開發(fā)人員來做。如果后加入的開發(fā)人員也可以快速的了解app架構(gòu)定位到修改代碼的大致模塊梯找。 - 其他
使用純代碼可以方便的代碼進(jìn)行共用唆阿。甚至可用使用在別的項(xiàng)目中。我們使用xib自定義控件锈锤,特別是在做一些共同頁面需要提供給其他人調(diào)用的時(shí)候驯鳖,使用xib可以很直觀的知道我們頁面的大致內(nèi)容。我的做法是xib的粒度盡可能的小久免。
參考文檔
參考1