是否应该使用iPhone中的NIB或代码创建视图?

时间:2009-06-15 21:18:47

标签: iphone uiview uiviewcontroller

使用Interface Builder设计视图时是否存在性能,开发缺陷或优势?

6 个答案:

答案 0 :(得分:11)

通常你想使用Interface Builder;有几个原因可以让你想通过编程接口来实现这个目的:

  • 它是更受欢迎的创建用户界面的方式,因为它简单易用,只需使用代码就无法轻松实现。
  • 它可以帮助您的应用程序符合iPhone Human Interface Guidelines,通过使用Apple会鼓励开发人员遵循的标记等,以保持iPhone应用程序的一致性和可用性。

尽管如此,编程接口有时比使用Interface Builder更有利的主要原因是需要多次创建的界面元素 - 例如,创建n UIImageView s - 基于一个无法在Interface Builder中复制的变量。程序化接口允许这种灵活性,在这种情况下通常更有效。

请注意,NIB / XIB也会占用内存,如果所有接口都放在主NIB文件中,它不仅会增加应用程序的内存使用量(对于可能无法立即需要的资源),这会增加装载时间。尽管如此,这个问题的正常解决方法是不使用编程接口,而是将不同的接口元素组放在不同的NIB文件中,将所需的接口放在主NIB文件中,该文件在应用程序启动时加载,以及其他NIB文件中的其他接口元素组,在需要时加载。

简而言之,一般的方法是使用Interface Builder,除非您需要创建可在Interface Builder中轻松处理的可变数量的元素。

答案 1 :(得分:2)

一个缺点是很容易错过布线或动作的布线,并且对此进行故障排除可能会很痛苦。两个积极因素是定位,对齐和锚定UI元素要容易得多,并且在手机旋转时元素会重新绘制(这是一个动画过程,否则您需要使用程序元素处理自己)。

答案 2 :(得分:2)

我自己说,当我试图学习如何为iPhone开发时,我发现界面构建器非常钝。您应该使用的工作流程对我来说仍然没有多大意义。对于挑剔的界面布局而言,界面构建器比手动编码更快。

在UIViewControllers中以编程方式生成GUI的缺点是,您已经模糊了MVC模式中视图和控制器之间的差异。如果你可以将GUI生成保存到loadView方法,你仍然可以在生成信息的代码和显示信息的代码之间保持适当的界限。

简而言之:我更喜欢通过覆盖UIViewController子类中的loadView来生成GUI。

答案 3 :(得分:1)

为什么没有人提到翻译。我们在11个语言环境中有一个项目 - 这将提供一些nib *(#locales) - 它是不可接受的(对于10个UI的项目,超过一百个nib)。

答案 4 :(得分:0)

从我看到的直到现在,使用XIB生成视图非常容易。但是由于我很长一段时间没有在iPhone上开发,我只能引导你看一篇展示样本XIB转换为Objective-C代码的文章。

http://arstechnica.com/apple/guides/2009/04/iphone-dev-convert-xib-files-to-objective-c.ars

界面生成器任何一天! :)

我确信通过直接编码视图没有显着的性能提升。

答案 5 :(得分:-1)

永远不要使用该工具查看NIB的代码生成。但请看苹果公司的Note。

注意:虽然您可以在不使用nib文件的情况下创建Objective-C应用程序,但这样做非常罕见,不推荐使用。根据您的应用程序,避免使用nib文件可能涉及覆盖大量框架行为,以获得与使用nib文件相同的结果。