Storyboards vs NIBS vs Code Debate(翻譯)

前言

做iOS開發的童鞋都應該會糾結一個問題,那就是在做開發的時候是使用StoryBoard還是使用Nibs又或者是Code(純代碼流)呢?筆者也非常糾結這個問題,今天碰巧在raywenderlich上面看到了幾個大神之間的撕逼,哦不,討論之后,感覺收獲良多,于是就將他們討論的內容整理翻譯了一下,如有不當之處,還請多多包涵,原視頻請戳這里

討論

Ray Wenderlich

Ok!現在我們都在線,感謝各位的到來,今天我們會有一個討論關于iOS開發的討論,是選擇Storyboards、Nib還是Code,我們有三個志愿者,Cesare Rocchi代表的是“Code愛好者”,Tammy Coron 代表的是“Nib愛好者”,Felipe Laso Marsetti代表的是“StoryBoard愛好者”,我們將從Cesare Rocchi開始

Cesare Rocchi

首先,code是非常清晰直觀的,你可以直接看著代碼,你不需要打開愚蠢的Nib文件,并且不用深入研究然后找出一些復雜元素到底關聯了還是沒有關聯,這些都很傻;當你在開發一個大型項目的時候這種方式非常的有用;當我從一個crazy guy那里接手一個項目,這個項目是用StoryBoard或者Nibs做的,最后我會用code重寫所用的東西,你可以在StoryBoard或者Nibs設置好所有東西,但是最后你可以用代碼重寫所有的狀態;比如你在一個nib文件里面設置了一個lable,當你運行這個app的時候這個lable看起來與你設置的不太一樣,這是因為另外一個人在之后添加了一行代碼改變了那個lable的屬性

Tammy Coron

當聽到他(Cesare Rocchi)如此貶低Nib的時候讓我怒不可遏,我作為一個程序媛有很長一段時間了,我見過非常多的程序猿喜歡使用code的方式來開發的;但就我個人而言,我是一個非常依賴于視覺的人,我喜歡通過可視化的方式來進行編程,所以我選擇使用Nibs;你可能會說使用StoryBoard可以比使用Nibs看到更多的東西,但是對我來說,我并不喜歡StoryBoard,因為StoryBoard能做的很有限,特別是當你在寫一個大型項目的時候或者你與其他的人合作的時候,如果使用StoryBoard你將會把所有的UI都集中在一個文件里面,這會導致合作變得非常困難,合并上也會有很多的麻煩;StoryBoard上還有一個很大的問題就是,它不允許你操作太多的屬性,特別是在不同的View里面使用TableViewCells的時候,你不可以在StoryBoard里面重用它們,你可能可以做到但是會比較麻煩,而Nib要做起這個會更加的簡單;并且你不要想去在StoryBoard里自定義Controller或者是View,無論何時想要做到這些你最好去使用Nib

對于code,我同意如果使用code要做很多的工作,必須要去理解Nib背后的代碼,但是使用Nib你可以快速看到自己對元素操作的效果,如果使用code,你寫好所有的元素,設置好它們的屬性,再將它們添加到視圖里面,你必須要在運行app之后才能夠看到具體的效果,這是非常重要的事情,沒有人在意代碼到底長什么樣,他們只會關心app看起來怎么樣, 最好的觀察方式就是使用Nib來做

So,我可能有點小激動,等我冷靜下來我會說得更好,XD

Raywenderlich

非常不錯的觀點,現在輪到最后一個人發言了,Felipe該你上了

Felipe Laso Marsetti

So,Cesare你就是個混蛋;Tammy并沒有讓我感到不悅,因為她很重視可視化,而可視化就是未來,雖然code很酷,但是可視化將會是未來,不錯,Nib或許更加的酷更加的自由,但是未來一定是StoryBoard的天下,它可以讓你做到一些Nib與code做不到的事情,當你在合并代碼或者合并Nib的時候你仍然會遇到沖突,每當你觸碰Nibs,Xcode就會毫無理由的認為你改變了它,所以你要描述這樣的改變,因為Xcode認為它改變了,僅僅因為你看了它一眼

StoryBoard更好,不用再像Nib或者code那樣工作,如果你使用code,你需要運行你的app,看布局是否合理,然后回去更改布局屬性,再運行app來看效果,不斷的重復,這樣效率非常的低,或許使用Nib會有所好轉,但是當你在做一個大型項目的時候,你會有三四十個ViewController,這樣你可能就會有四五十個Nib文件,這會非常的煩人,因為你要非常小心的做一些修改

然而StoryBoard不僅可以讓你避免寫一大堆無聊的代碼,甚至是避免那些要在Nib下寫的代碼,比如使用segue和unwind segue,你可以通過一系列的delegate方法來傳輸數據,你可以設置轉場動畫,你甚至可以自定義動畫

大家都認為我們只能在一個StoryBoard上面工作,但是實際上我們可以在不止一個StoryBoard上面工作;當我們在開發企業級客戶端的時候,我們通常都是3-5個人的團隊,我們會有10個StoryBoard,這很美妙,因為你可以將各個模塊分開,比如about模塊、反饋模塊或者社交模塊,你可以看到可視化的layout,為了避免別人說StoryBoard變得越來越大,越來越慢,你可以試著打開它,然后,boom~~,你可以清楚地知道什么連接著什么,什么要去哪里,你可以命名你的segue,你可以擁有很多的自定義,所有的這一切都預示著StoryBoard將會是未來

當然,Nibs和code是很有用的,而且我也建議在必要的時候去使用Nibs和code,但是我想說在Xcode中使用StoryBoard是非常方便的,這是蘋果在用的東西,他們為StoryBoard做了非常多的工作,它就是未來,并沒有足夠的證據來證明StroyBoard很慢很臃腫或者其他,沒有足夠有力的證據來證明這一些;我強烈建議使用StoryBoard,當必要的時候你可以使用code或者nibs,但是我建議你盡量避免去使用,因為StoryBoard才是王道

Raywenderlich

Awsome!非常棒的觀點!So,接下來每個人都有一個機會為自己的觀點進行辯解,那么,Cesare你有什么要說的嗎?

Cesare Rocchi

額,首先,如果當你想要合并Nib或者StoryBoard的時候,那簡直就是噩夢,毫無意義,然后code要做到這個是非常輕松的,作為一個項目經理,我可以清楚地看到昨天代碼都做了哪些修改,但是像Nib或者StoryBoard,我無法把握它到底做了什么,到底是修復了bug還是實現了某一個功能

還有就是,你在某些時候可能會使用Xcode的beta版本來進行工作,你知道Xcode在管理Nibs或者StoryBoard上面并沒有那么的智能,當我打開項目的時候,beta版的Xcode修改了某些文件,導致了所有東西都消失了,這就意味著你打開StoryBoard之后什么都沒有了,所以整個項目就完全崩潰了

第三點就是使用Nibs或者StoryBoard會減低我的工作效率,當我在coding的時候,我喜歡保持我的手放在鍵盤上面,而不用去打開一個nib文件然后去做一些關聯,然后又將手放回鍵盤繼續coding,這樣會降低我的工作效率;還有一點要提的就是,不止一次,特別是在開始的時候,我會盯著屏幕,嘗試著找出是誰TMD給這個屬性設置了值,誰設置了x或者y,在哪里或者是如何設置的等等,That's all!

Raywenderlich

So,Cesare說使用code會讓他的工作效率更高,Tammy你有什么要說的嗎?

Tammy Coron

額,當你看著nib文件的時候,你并不需要過多的去關心那么多的屬性,它們是怎么設置的以及它們如何的關聯,當你使用nib工作的時候,你只需要將你的psd文件處理之后放到nib文件里面,這樣你直接就可以看到效果,然后你再去關聯代碼,我想說的是使用nib一切都非常的快速

我可以在app完成之后深入到framework里面,在非常有限的時間里面,在這里面沒有代碼,只有可視化的元素,這樣就可以快速的深入到screen里,去看你的app是如何連接的,然后再去處理自己的代碼;但是如果你把一切都用代碼來做將會非常的繁瑣,要去設置這樣那樣的屬性,oh my god,簡直無聊死了,根本就是在浪費時間;我討厭使用StoryBoard,使用StoryBoard的人就像是僵尸一樣,一個big boy不應該去使用StoryBoard,額,反正我就是不喜歡XD

Raywenderlich

So,Felipe你是這里最年輕的成員,你也非常喜歡僵尸,你有什么觀點?

Felipe Laso Marsetti

額,我就是一個僵尸StoryBoard用戶,我強烈建議使用StoryBoard,code是非常有必要的,有時候你不得不去寫一些代碼來完成那些可視化完成不了的工作,比如自定義UI,但是那些都不是常用的,大部分時候使用StoryBoard就可以滿足需求了;使用StoryBoard你可以非常方便的去設置元素屬性,而不用去理會背后繁瑣的代碼;這所有的一切都意味著StoryBoard是未來,這是蘋果在用的東西

最后我想說,越少的代碼就意味著越少的機會將bug引入到你的app里面,就好像有500行自定義UI的代碼,你可以將它們減少到100行,這樣你就可以避免掉400行沒有必要的代碼,這樣可以減少bug,而且這樣更加容易的去維護你的代碼,如果你是獨立開發,那么使用code或許對你影響不大,但是如果你從別人那里接手項目,你就不得不深入研究這些代碼到底做了什么,是如何設置view的,什么繼承了什么,以及在nib里面有什么,你甚至不能使用nib去創建一個有著static prototype cells的tableview,你必須去創建一個tableview的子類,新建.h、.m、以及nib文件,然后再去創建cell的子類,再新建.h、.m、以及nib文件,然后這些cells在tableview當中是獨立的,這樣你就不得不去新建一個又一個的cell;然而在StroyBoard里面,只需要一個tableview,20個cells,然后boom~~,太美妙了,節省時間,讓客戶端更簡單,更少的bug,而且一切都是在可視化下完成的,你不用去不停的stop、run、stop、run,然后去看你的nib文件以及你的代碼,僵尸贏了

Raywenderlich

不錯的論證,有一點我不斷聽到的就是,使用可視化的User Interface Designer,你可以避免更多的代碼,可以減少bug,你們怎么看待這個觀點?

Cesare Rocchi

額,在autolayout出現之前我會同意這個觀點,如果讓我對Interface Builder進行打分(10分制),在過去我會給6分,當autolayout出現之后就只有3分了,我特別害怕在Xcode4.6上面進行工作,autolayout嘗試著將所有的東西混合在一起,造成的情況就是你在界面上面沒有問題,但是在通常情況下這不是你想要的,你可能是想要讓你的視圖更小或者是其他;我不得不承認autolayout在Xcode5之后有所改善,但我對此并不是很感興趣

Raywenderlich

Tammy,Cesare很反感autolayout,你有什么想說的嗎?

Tammy Coron

我同樣也不是autolayout的狂熱粉絲,我會盡可能的將autolayout關閉掉,我在一些項目上面用過autolayout,但我對autolayout提不起興趣,你仍然可以使用Nib而不去使用autolayout,所以我認為他的論證是無效的,抱歉XD

Raywenderlich

那么Felipe你是怎么看待autolayout的呢?

Felipe Laso Marsetti

無論你喜不喜歡,autolayout會始終存在著,我們將會有不同尺寸的設備需要去適配,iPad mini、iPhone4、4s、iPad retina,autolayout可以幫助我們去完成這些適配,Nin與StoryBoard都可以讓你可視化的去使用autolayout,你可以非常直觀的在屏幕上進行布局,但是如果去使用code,這將會是一件非常麻煩的事情

使用StoryBoard在debug的時候你可以非常直觀的看到,在Xcode5上,你可以預覽自己的布局,一旦你更改布局約束,改變設備的尺寸,你可以立刻就看到結果,如果你使用code,你就不得不debug、run、debug、run,非常的麻煩;就個人而言,我也不是非常的喜歡autolayout,雖然在Xcode5與iOS7之后有所改善,但仍然不是很好用,這個我們無能為力,但是不管怎樣,使用Interface Builder會好過使用code

Raywenderlich

OK!不錯的論證,接下來會持續進行半個小時的討論,Cesare從你開始

Cesare Rocchi

code是非常清晰直觀的,你可以寫完之后立刻運行,然后得出運行結果,你不需要深入到6個不同的屬性編輯器當中,來搞清楚這些變量屬性等等是如何被設置的

最后一點我想要說的是,Interface Builder背后的理念是非常不錯的,這個理念是想要讓設計師使用來設計UI,不管是Nibs還是StoryBoard都會讓你直觀的看到你的app長什么樣子,就像在有些時候,你不需要有一個填充著數據的tableview,作為一個設計師,根本就不會需要一個填充著真實數據的tableview,設計師只想要知道app看起來怎樣,這不僅是一個給設計師的工具,更多的是給那些不想寫太多代碼的coder,That's all

Raywenderlich

OK!And Tammy?

Tammy Coron

總的來說,我認為Nibs是最好的方案,特別是對于有創造力的人,知道Nibs背后的代碼原理是必要的,但是你為什么要去浪費時間去跟代碼較勁,Nibs非常的強大;至于Story Board,我無法像看待VB那樣看待它,它就像僵尸一樣(可能是異類的意思)(Tammy后面說了一個僵尸吃大腦的笑話,聽得不是很懂就沒翻譯了)

Raywenderlich

Awsome!Felipe?

Felipe Laso Marsetti

額,StoryBoard就是未來,就像block,就像ARC,就像一代又一代的Xcode與iOS一樣,蘋果現在把精力都放在了StoryBoard上面,他們沒有在Nibs上面更新太多的東西,他們沒有再加新功能進去,你可以堅持使用Nibs或者是code,但是使用StoryBoard你可以節省大量的時間,你可以在StoryBoard上做出非常復雜的UI,segues、unwind segues、custom segues,你甚至可以讓StoryBoard與Nibs和code一起工作,更少的bug,你應該去嘗試一下

然而你們很多人還是在使用code和Nibs,因為你們很頑固,你們喜歡老的方法,害怕改變,說實話,我在日常工作當中總是在使用StoryBoard,我們在大型的合作項目中使用它,它總是最趁手的工具

在大多數情況下,就我的經驗而言,我或許是一個年輕的僵尸,StoryBoard就是我的工具,StoryBoard可以做到的事你是可以用Nibs和code做到,但是記住,這是在蘋果在WWDC上面提出來的東西,把StoryBoard和Nibs混合起來會工作的很好,這就是蘋果在做的事情,StoryBoard就是最好的工具,所以,請別阻止你自己去嘗試這一項美好的新技術,你可能僅僅只是害怕做出改變,你只需要花一點小小的時間,你就會感受到StoryBoard的美好之處

Raywenderlich

Awsome!感謝各位的發言,那么各位有什么問題想問的嗎?

Matthijs Hollemans

如果你把所有的東西都放在StoryBoard里面,你就需要一次性的弄清楚這一大堆的東西,我認為像Nibs那么被分割會更好,允許你使用segue來連接任何東西,你應該每次只處理一個屏幕,這樣更兼容你的Xcode窗口大小,然而StoryBoard占用了太大的空間

司機

我們都知道使用StoryBoard可以非常容易的做出一個簡單的應用,在AppStore當中80%的應用都是屬于簡單應用,有許多的開發者都是業余的,包括我也是,我只是想出了非常好的idea,但不一定要做出非常棒的app,我想StoryBoard就是為這些人準備的

Chris Wagner

這是很好的一點

Tammy Coron

你可以僅僅是nibs來構建一個StoryBoard,就像你如何整理自己的項目一樣,但是我無法想象自己能夠像使用Nibs那樣去使用StoryBoard,說實話其實我并沒有怎么使用過StoryBoard,所以我對于StoryBoard的大部分觀點都很牽強XD

Matthijs Hollemans

我同樣也是一個依賴視覺的人,同樣我也喜歡在可視化的角度去做事,Xcode可以變得比現在更加的可視化,不僅僅是在組織Nibs和StoryBoard上面,Xcode還可以可視化的做很多的事情,舉個栗子,可視化的操控UI元素,我更喜歡在Nibs下做這些事情,我不認為這種方式(使用Nibs)會被淡化,因為我認為蘋果并沒有花太多的心思在自己的開發工具上,它可能只給了開發需要用到的最少功能,特別在與其他的IDE比較起來的時候,我期待Xcode在未來會變得更加的可視化

Felipe Laso Marsetti

等一下!你居然說蘋果沒有花心思在開發工具上?╰(‵□′)╯

Matthijs Hollemans

額,確實,這一塊對他們而言并不是很重要,他們雖然給了開發者appstore,但是如果他們真的很重視這一塊,他們應該會給我們更多更有用的工具

Felipe Laso Marsetti

這是一個值得討論的地方,核心的問題是,不管你喜不喜歡,autolayout與StoryBoard都會持續存在,明年WWDC,蘋果公布iOS8,我們將會看到蘋果在StoryBoard以及Interface Builder上面做的工作,可視化將會變得更加的強大,有一點我需要考慮的就是是否要在大型項目中選擇使用Nibs,StoryBoard是以ViewController為基礎元素的,而Nibs是以View為基礎元素的,一個nib就是一個view,這樣在開始使用的時候會有點不適應,因為你想要創建一個自定義的view,但是你又不能夠在直接在StoryBoard里面做到

另外關于蘋果專注于appstore等問題,這些是事實,但是記住,蘋果也確定了整套UI、開發了StoryBoard、Interface Builder,他們打造這一整個生態鏈;另外關于StoryBoard,你可以用來創建非常簡單的app,遇到復雜的app,你可能會去選擇Nibs,我覺得這是錯誤的,你仍然會在合并的時候遇到沖突;我想說的是,嘗試一下,如果你需要幫助,來我這里,你知道在哪里可以找到我;使用StoryBoard,你確實可以做出非常復雜的項目,性能問題根本無需去擔心,在現在的5與5s上面就更加沒有必要去擔心這個問題了

Tammy Coron

StoryBoard讓我感到麻煩的是,你不得不在自己的app上面創建自定義views,為什么我要浪費時間去使用StoryBoard,我用Nibs就可以完全搞定了

Felipe Laso Marsetti

因為StoryBoard可以更好的管理你的視圖,當用戶在app里進入視圖與返回視圖,你的控制器就是一個scene,所以你可以更加可視化的看待這些,你可以清楚的知道自己會被帶到那里去,自定義的view是獨立的部分,你可以使用一個nib創建一個自定義的view,然后重用非常多次,同樣要記住,StoryBoard允許你重用你的控制器而不用在StoryBoard里面重復的去創建這些,你甚至可以使用code來創建,你不應該被限制到這里面去,當你結合nibs去使用StoryBoard的時候會更加的美妙

Tammy Coron

我也可以通過看著項目的導航部分來管理自己的項目,這是我的第一個視圖,這是我的第二個視圖,等等,我需要找到一個很好的理由讓我去使用StoryBoard,我同意關于StoryBoard就是未來的看法,不管我們喜不喜歡,autolayout就是未來的趨勢,但是我真的很難喜歡上StoryBoard

Felipe Laso Marsetti

這里有一個很好的例子,我去年接手了一個項目,包含了五六十個ViewController,并且有一大堆的nibs,在我開始貢獻代碼之前我不得不去深入其中去研究這些東西,因為這個項目不是我寫的,這個項目已經做了1-2年了,在剛開始的幾個月我完全迷失在這個項目里面,我不得不去搞清楚這些nib文件之間的關系,這實在是非常困難

但是如果我有一個StoryBoard,那么一切都將會清晰明了,這會節省很多的時間;所以你應該至少使用StoryBoard來創建app的布局,然后再去具體的制作一些自定義的酷炫UI,采用任意一種你喜歡的方法;當你接手一個大型項目的時候StoryBoard確實會幫你大忙

紅衣大叔

我參與的項目有著百萬行的代碼,幾百個視圖,我不知道我們是否需要去使用StoryBoard,不過我會去嘗試一下,你說的很不錯

Cesare Rocchi

額,我已經有兩三年沒有去做大型項目了,當我仍然記得那時候的痛苦,比如去處理各種各樣的結構體,就算完全使用code來做的項目,要去處理這樣那樣的結構體也是一件非常困難的事情,其實我也同樣是一個依賴于視覺的人,但是我并不想在Xcode上面以可視化的形式來做項目,我更喜歡在PhotoShop或者Sketch上面去做這些事情,做一個優秀的coder,你必須要知道各種東西,這是一個view這是一個button,這個是否更加的靈活等等,這就是為什么我打開Xcode的時候,我希望我的第一個視圖是一個空白的模板

在我的上一個項目當中,我在一個很小的部分使用了NavigationController,但是我添加的是我自定義的一個NavigationController,這是一個自定義度很高的一個app,在這個項目里面,我完全看不出哪里可以使用StoryBoard,我都是用代碼把一切搞定,非常的簡單,而且可以很好的重用它們,我做的都是自定義度很高的app,唯一一個使用到的視圖模板就只有tableview

紅衣大叔

在我的經驗看來,客戶經常會給我Photoshop文件,告訴我這就是app要看起來的樣子,然后你開始寫代碼,可能還有其他的方式,但是我覺得寫代碼是一種輕松的方式

Felipe Laso Marsetti

從我的經驗無法知道在客戶端合作開發的時候會發生什么,但是你得到一個Photoshop文件,你得到一個需求文檔,然后對你說這就是app要看起來的樣子,然后視圖A到視圖B是如何的,視圖B到視圖C又是如何的,把這些做出來,告訴你期限,然后拜拜

額,你使用code或者Nibs來做會很酷,但是你可以使用StoryBoard來做這些東西,就算是非常復雜的UI也可以做到;在我的公司里面,經常會有自定義UI的需求,我們可能需要用到非常多的工具,包括code甚至是PaintCode,以及其他可以生成可視化的UI的工具,Nibs或者是StoryBoard,能夠使用StroyBoard我會非常的快樂,可以看到自己使用了StoryBoard完成了一個有一個的任務

Brian Moakley

我們討論了autolayout,討論了StoryBoard,并且現在認為它們就是未來,但是,一年之后,我們可能又會說其他的東西是未來,所以,我們應該重新思考我們的app到底是如何運作的,知道這些新技術確實很不錯,可以提高我們的工作效率,但是我想,懂得如何使用code來完成所有事情是很明智的

Felipe Laso Marsetti

iOS7給了大家各種各樣的機會去嘗試StoryBoard,甚至是Nibs,如果你拒絕使用StoryBoard,可能因為你現在會使用一種完全不同于與以往的方式來創建app;既然你現在有一個機會來擺脫原來那么繁瑣的開發過程并且嘗試新的工具以及使用iOS7帶來的全新UI,為什么不試一下呢?

紅衣大叔

一個很好的嘗試StoryBoard的理由就是使用StoryBoard可以動態調節尺寸來適應不同的設備,而autolayout將會是最好的解決方案

Cesare Rocchi

我并不喜歡StoryBoard或者是Nibs,但是我不得不去了解它們,特別是我在教學的時候,不管是教autolayout還是Nibs,我都會建議你去學習如何使用代碼來做到這一切,Nibs或者是StoryBoard做了很多的工作,你信任著這些工具,但是卻不知道它們背后的代碼原理是什么,它們在背后做了什么事情,這很糟糕;如果你想要成為一名專業的iOS開發者,我想你最好知道各種各樣的開發方法,無論是StoryBoard、Nibs還是code

Felipe Laso Marsetti

這里有一個很好的例子來說明知道code的方式很重要,有很多人經常會問一些問題就是為什么我的視圖無法切換、為什么dataSource不起作用等等,知道如何使用code會很好的幫助你解決這些問題,一旦你知道如何使用code,那你使用StoryBoard或者是Nibs將會是如魚得水,知道code確實非常的重要

Matthijs Hollemans

在Nibs或者是StoryBoard中使用autolayout是非常好理解的,使用code來寫約束很簡單,但是大部分時候都沒有意義,但是如果你在Interface Builder里面做這些,它會告訴你怎樣的約束是有意義的,它會告訴你哪里應該加約束,哪里不應該加;在Nibs或者StoryBoard里面做這些要比使用code更好

Felipe Laso Marsetti

知道code確實很有必要,大部分人在做iOS開發的時候不知道語言背后的一些原理,這可能會造成一些錯誤,或是內存泄露等等,同樣的情況也會在使用StoryBoard或者是Nibs的時候發生,雖然使用這些工具開發起來會非常的方便,但是如果你不知道背后的代碼原理,你可能會在debug的時候遇到困難

Raywenderlich

那么接下來是投票環節了,Nibs、StoryBoard、code,你會選擇哪一個?

Brian Moakley

StoryBoard

Cesare Rocchi

Code

Matthijs Hollemans

StoryBoard

紅衣大叔

StoryBoard

Felipe Laso Marsetti

沒有必要問我

Chris Wagner

StoryBoard

Raywenderlich

我也同樣是StoryBoard

Tammy Coron

我TMD要說StoryBoard嗎?這樣我不是很搞笑(其他人大笑);額,我非常喜歡Nibs,所以我會選擇Nibs,但是如果要我在Nibs和code間做一個選擇,我會選擇code,因為code可以做任何事情

Raywenderlich

OK!看來各位大部分都是選擇了StoryBoard,╮(╯▽╰)╭

總結

就筆者個人而言,三種方式我都嘗試過,個人更偏愛使用code,當然根據不同的場景我會結合各自的優點進行開發;如上所述,StoryBoard是未來,雖然還有不夠完善的地方,但是相信蘋果會將其做的越來越好, StoryBorad也會逐漸展現出它的魅力

拓展閱讀

代碼手寫UI,xib和StoryBoard間的博弈,以及Interface Builder的一些小技巧

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,556評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,778評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,218評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,436評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,969評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,795評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,993評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,229評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,687評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,990評論 2 374

推薦閱讀更多精彩內容