使用Interface Builder設計視圖時是否有任何性能,開發缺陷或優點?應該在iPhone中使用NIB或代碼創建視圖嗎?
回答
通常你想使用Interface Builder;有幾個原因,你爲什麼會想這樣做了編程接口:
- 它是創建用戶界面,由於其簡單,並且你不能達到視覺上的優勢較爲接受的方式通過簡單地利用碼。
- 它可以幫助您的應用程序符合iPhone Human Interface Guidelines,通過使用蘋果公司鼓勵開發人員遵循的標記等來保持iPhone應用程序的一致性和可用性。
儘管如此,主要原因編程接口有時在使用Interface Builder更有利的是需要創造幾次界面元素 - 例如,創建n
UIImageView
秒 - 基於不能是一個變量在Interface Builder中複製。編程接口支持這種靈活性,在這種情況下通常效率更高。請注意,NIB/XIB也會佔用內存,並且如果所有接口都放置在主要的NIB文件中,它不僅會增加應用程序的內存使用量(對於可能不需要立即需要的資源)但會增加加載時間。然而,這個問題的正常解決方法不是使用編程接口,而是將不同的接口元素組放在不同的NIB文件中,將立即需要的接口放置在主要的NIB文件中,當應用程序啓動時將其加載,以及其他NIB文件中的其他界面元素組,在需要時加載。
簡而言之,一般的做法是使用Interface Builder,除非需要創建可變數量的元素,而這些元素不易在Interface Builder中處理。
從我見過的到現在,使用XIB生成視圖非常簡單。但是由於我沒有長時間在iPhone上開發,所以我只能指導您閱讀本文,該文章展示了一個將XIB轉換爲Objective-C代碼的示例。
http://arstechnica.com/apple/guides/2009/04/iphone-dev-convert-xib-files-to-objective-c.ars
Interface Builder中ANYDAY! :)
我敢肯定,直接編碼視圖沒有顯着的性能收益。
一個缺點是很容易錯過接線插座或操作,並且排除故障可能會很痛苦。兩個積極的方面是定位,對齊和錨定UI元素要容易得多,並且元素在手機旋轉時重繪自己(這是一個動畫過程,否則需要使用程序化元素來處理自己)。
說起自己,當我試圖學習如何爲iPhone開發時,我發現接口構建器非常呆板。你應該使用的工作流程對我來說依然沒有什麼意義。界面生成器比手寫代碼更快速,用於精美的界面佈局。
在您的UIViewControllers中以編程方式生成GUI的缺點是您已經模糊了MVC模式中視圖和控制器之間的區別。如果您可以將GUI生成保持爲loadView方法,那麼您仍然可以在生成信息的代碼和顯示信息的代碼之間保持良好的邊界。
簡而言之:我更喜歡通過在UIViewController子類中重寫loadView來生成GUI。
不要看使用該工具的NIB的代碼生成。但看看蘋果的說明。
注意:雖然可以在不使用nib文件的情況下創建Objective-C應用程序,但這樣做非常少見,不建議使用。根據您的應用程序,避免使用nib文件可能涉及覆蓋大量的框架行爲,以獲得與使用nib文件相同的結果。
爲什麼沒有人提到翻譯。我們在11個語言環境中有一個項目 - 這會給出一些筆尖*(#語言環境) - 這是不可接受的(對於10個UI項目,超過一百個筆尖)。
- 1. 從UIBarButtonItem創建nib視圖?
- 2. 我應該在我的MVC視圖中使用Url.Content()或ResolveUrl()嗎?
- 3. 應該或不應該使用nib文件?
- 4. 在Interfacebuilder中創建自定義視圖並使用代碼
- 5. 創建視圖 - iPhone
- 6. 我應該創建一個用於創建代碼的GUI的新類嗎?
- 7. 使用iPhone SDK創建「加載...」視圖
- 8. 應該以編程方式構建視圖的代碼放在UIView或UIViewController中嗎?
- 9. Caliburn.Micro使用MEF在代碼中構建視圖/視圖模型
- 10. 應該手動或使用InterfaceBuilder創建我的對象嗎?
- 11. 在iPhone中創建電話應用程序的通話視圖
- 12. 在iPhone應用程序中創建新視圖
- 13. iOS - 用代碼或故事板設計器創建視圖?
- 14. 如何在xcode中創建一個nib文件的視圖?
- 15. 我應該在不同視圖中重用視圖模型嗎?
- 16. 我應該將我的代碼放在Activity或View中嗎?
- 17. iOS:何時在同一個NIB上使用多個NIB或多個視圖?
- 18. 我應該在iPhone視圖中「保存」更改以「創建新對象」?
- 19. 應該在PL/SQL代碼中使用DBMS_STANDARD包的過程和/或函數嗎?
- 20. Android:你可以在代碼中編輯用xml創建的視圖嗎?
- 21. 如何使用Drupal 7中的代碼創建視圖?
- 22. 視圖使用xml創建的差異 - 使用代碼
- 23. MVC&ajax:我應該創建更多視圖嗎?
- 24. 我應該在生產代碼中使用Google的JSAPI嗎?
- 25. 我應該在自己的非LINQ代碼中使用DuplicateKeyException嗎?
- 26. 我應該在我的PHP代碼中使用assert嗎?
- 27. 我應該放開onStop()或onDestroy()中的視圖引用等嗎?
- 28. 我應該讓用戶在數據庫中創建表還是創建視圖?
- 29. 在生產代碼中提取類後應該創建新的測試類嗎?
- 30. 視圖的創建應該是View或ViewModel [MVVM]的一部分?
我是新來的iOS開發,但不是MVC模式,我不知道爲什麼你不能保持獨立於ViewController的視圖,仍然不使用Interface Builder。我只需創建另一個類來生成視圖並在控制器的loadView方法中使用它。在這個類中,它並不真正考慮我將使用多少種方法,我仍然保持M-V-C邊界的強大。這聽起來不錯嗎? (我還沒有與Objc的經驗確定:) – 2011-06-19 18:41:53