Storyboard、Nib文件和代碼來實現UI的利與弊

      很清楚,這就是iOS裏面兩種可視化UI的方法。加上所有用代碼來實現UI,總共有三種方法能夠來實現。程序員

      咱們先說一下全用代碼來作,這個方法屬於比較極端的程序員所推崇的,優勢和缺點一樣明顯。工具

      優勢是能夠實現全部的功能,用Nib文件和Storyboard能夠實現的功能用代碼都能實現,不能實現的一些功能,用代碼也能實現;另外用代碼方便多人共同開發項目,版本管理比較方便,Nib文件和Storyboard這點上就是致命傷了(Xcode5以後好了很多),最後一個就是這種開發方法頗有高大上的感受,可讓程序員自我迷醉微笑ui

      缺點是代碼不夠直觀,並且冗餘很重。直接看代碼你很難對一個View立刻有個大致的印象,須要運行起來才能完整的看到全貌;至於代碼冗餘也很好理解,你看見View初始化以後都是一堆堆的設置frame,各類target-action的設置,也會以爲冗餘的。編碼


      Nib文件是用InterfaceBuild來輔助作可視化的UI設計的文件,若是你用過微軟的VisualBasic,VisualC++等等可視化開發語言的話,對這個概念應該不陌生。spa

      用這個來開發UI一樣讓你歡喜讓你憂,歡喜的是簡單地UI確實比較方便,用鼠標拖拉一下,再加上一些設置就能夠作出來了。憂的是這個功能其實是用xml來存下View裏面的內容,Xcode5以前打開文件,不加任何修改都能發現變化了,版本管理時滿文件都是紅色的,在多人修改到同一個文件時簡直就是噩夢,Xcode5以後好了很多,但小組開發時少方便仍然是存在的問題。用Nib文件生成的UI,用代碼均可以進行修正,咱們每每會在Nib文件裏面設置一部分,而後再代碼中修正實現另一部分,這樣的編碼方法容易起一些衝突,有時會讓人很頭暈。還有一點,這樣生成的內容在不一樣的項目中複用是很難實現的。設計


      Storyboard實在iOS5以後出現的概念,2011年的WWDC的Session309《Introducing Interface Builder Storyboarding》裏面提出來的。這個東西的出現是爲了彌補Nib文件僅僅針對一個View,沒有針對總體應用流程的改進,同時它能夠進一步節省代碼。試用了一下,一個簡單的例子,見下圖:調試


      我的的感受嘛,怎麼說呢,以爲一我的開發的簡單項目中使用仍是很不錯的。應用的流程比較清晰,能夠作到一目瞭然,View的切換是自動的,避免了用代碼來作,能夠進一步減小開發的工做量。缺點仍是不適合多人共用,一個board多人一塊兒維護的情形想一想就以爲沒那麼簡單,固然,有看到說應用並不是只有一個board,每人能夠用本身的board來開發。我認可,這樣作會減小不少麻煩,但仍然感受給版本管理帶來了不小的麻煩(退化到極限,不就是Nib文件了麼),另外,無論怎麼說,代碼的複用確實是變得困難了。code

      要說明的是,Storyboard和Nib文件並不是是非此即彼的互斥關係,在用了Storyboard的應用中也能夠用Nib文件,這對實現一些複雜的UI是有幫助的。固然,代碼必不可少的須要增長一些。xml


      我所從事的開發中,歷來沒用過純用代碼來實現UI,感受這樣作實現/調試/維護都不方便。不少項目因爲有歷史包袱,目前都是用Nib文件的方法在開發維護,新的應用感受比較小巧,一我的能開發過來的,決定用Storyboard來實現,慢慢逐漸轉向用Storyboard來開發。畢竟蘋果對於這個工具持續在改進,也是將來力推的一個方向。ci

相關文章
相關標籤/搜索