我已經看到有些團隊需要使用像砌體等工具以編程方式創建每個視圖。我想知道,這是什麼原因。我一直認爲IB是創建視圖和佈局的一種非常快速和簡單的方法。是否有任何理由以編程方式創建視圖而不是使用界面構建器?
能否請您指定使用的編程方法取代IB的所有的優點和缺點是什麼?
我已經看到有些團隊需要使用像砌體等工具以編程方式創建每個視圖。我想知道,這是什麼原因。我一直認爲IB是創建視圖和佈局的一種非常快速和簡單的方法。是否有任何理由以編程方式創建視圖而不是使用界面構建器?
能否請您指定使用的編程方法取代IB的所有的優點和缺點是什麼?
普遍觀點是很好in this post概括:
我花了無數個小時的尋找錯誤的源頭,卻發現它是在Interface Builder半打其中一個檢查一些複選框。如果它在代碼中,那麼瀏覽視圖代碼很容易,並且可以更快地查看問題的根源。
我還沒有真正發現這是真實的整體。有時候,特別是在自動佈局的情況下,通常是這樣。
如果您使用Interface Builder並且有插座並且忘記將插座連接到第二個位置,那麼您將在運行時崩潰。這很糟糕。這引入了一類全新的錯誤。
發生,但防禦性編程檢測它們與viewDidLoad
斷言並不難。
您是否曾經在NIB中發生過合併衝突。這是最糟糕的。 (當然,XIB格式已經有所幫助了,但現在只是糟糕透頂,而不是不可能。)如果你正與一些開發人員一起在一個大型應用程序中工作,那麼你將會浪費大量的時間來處理這個問題。
這一個是非常確實的論點。故事板是一個癱瘓直到我們有引用的痛點,現在它只是常常煩人。代碼差異和歷史記錄FAR比Interface Builder更勝一籌。
每當我編輯NIB時發生崩潰,我都會抱怨自己,並希望它是代碼更多。
這曾經是一個很好的論點。還有一些你可以避免的粗糙邊緣,但這些日子來說這是一個平庸的說法。
佈局代碼並不難。自動佈局比傳統佈局多一點,但它仍然不錯。嘗試在Interface Builder中使用自動佈局令人生氣。設置網點來控制內置約束只是愚蠢的。
這很簡單,只是重寫layoutSubviews並做你的事情。就我個人而言,我發現大多數事情比自動佈局更容易處理。
這在幾年前毫無保留地是真實的。現在好多了,堆棧視圖已經讓很多痛苦消失了,但它仍然是一個痛點。
Interface Builder本身並不壞。它的確會鼓勵不好的做法,阻止可重用性(與其他人合作更加困難),並且會減慢工作流程。
這使得與其他人合作更困難是一個堅實的觀點,懷疑任何在大型項目上工作的人都會不同意,因爲合併編輯界面生成器文件幾乎是不可能的。其餘的......可以說是最好的。
這一切都取決於需求。例如,如果你想添加一些按鈕的點擊視圖,那麼你必須以編程方式添加它。
有兩個或者加入編程方式或在界面生成器添加之間沒有性能差異。
不同的是,由Interface Builder它變得非常容易比較以編程方式,這就是爲什麼蘋果提供的接口生成器,使之更適合開發和簡單的,否則一切都可以通過唯一的代碼來完成。
所以,最好使用IB時,可能因爲它太容易和簡單,很短的時間服用。
這一切都是關於您的選擇。我更喜歡編程。 Reason-
Xcode
當您嘗試在多目標大項目開XIB
或storyboard
一般掛起。
Smaller
項目規模。
容易調試view heirarchy.
您應該搭配的方式工作。
這是一個基於意見的問題。這個話題的雙方都有強烈的感受。我堅決反對「盡一切可能在IB」陣營。有些人相信手工做一切事情。 (我認爲這是「Macho編程」,對我來說,似乎堅持要在彙編中做所有事情來展示你有多艱難。當然,你可以做到這一點,但**爲什麼?** –
如果你一個人工作,不想花費太多時間在IB上創建視圖 –
代碼 - >長時間開發,源代碼控制衝突較少,1個文件中的所有內容IB - >快速開發,更多衝突以及更多需要查找的地方當你想計算在視圖中發生了什麼 –