使用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. 创建视图 - iPhone
- 5. 我应该创建一个用于创建代码的GUI的新类吗?
- 6. 应该以编程方式构建视图的代码放在UIView或UIViewController中吗?
- 7. 使用iPhone SDK创建“加载...”视图
- 8. 应该手动或使用InterfaceBuilder创建我的对象吗?
- 9. 如何在xcode中创建一个nib文件的视图?
- 10. 在iPhone中创建电话应用程序的通话视图
- 11. 我应该将我的代码放在Activity或View中吗?
- 12. 如何使用Drupal 7中的代码创建视图?
- 13. 视图使用xml创建的差异 - 使用代码
- 14. iOS:何时在同一个NIB上使用多个NIB或多个视图?
- 15. Android:你可以在代码中编辑用xml创建的视图吗?
- 16. 应该在PL/SQL代码中使用DBMS_STANDARD包的过程和/或函数吗?
- 17. 我应该在iPhone视图中“保存”更改以“创建新对象”?
- 18. MVC&ajax:我应该创建更多视图吗?
- 19. 我应该在自己的非LINQ代码中使用DuplicateKeyException吗?
- 20. 我应该在生产代码中使用Google的JSAPI吗?
- 21. 我应该在我的PHP代码中使用assert吗?
- 22. 在生产代码中提取类后应该创建新的测试类吗?
- 23. 我应该在MVC3 ASP.NET中使用ASPX页面代替视图吗?
- 24. 应该只在Django的视图中使用commit_on_success装饰器吗?
- 25. 如何在iPhone中使用2个卷轴创建UI视图
- 26. 在iPhone中创建视频
- 27. 通过代码创建新视图
- 28. iPhone开发 - 使用多个视图/ xib/nib的复杂应用程序
- 29. 在iPhone应用程序之间共享视图和代码
- 30. 在Microsoft Word 2007宏中应该使用哪些VBA代码来创建目录
我是新来的iOS开发,但不是MVC模式,我不知道为什么你不能保持独立于ViewController的视图,仍然不使用Interface Builder。我只需创建另一个类来生成视图并在控制器的loadView方法中使用它。在这个类中,它并不真正考虑我将使用多少种方法,我仍然保持M-V-C边界的强大。这听起来不错吗? (我还没有与Objc的经验确定:) – 2011-06-19 18:41:53