【问题标题】:Should views be created using NIBs or code in iPhone?是否应该使用 NIB 或 iPhone 中的代码创建视图?
【发布时间】:2010-11-03 03:55:13
【问题描述】:

在使用 Interface Builder 设计视图时是否有任何性能、开发缺点或优点?

【问题讨论】:

    标签: iphone uiview uiviewcontroller


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      切勿使用该工具查看 NIB 的代码生成。但是请看 Apple 的 Note。

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

      【讨论】:

        【解决方案3】:

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

        在您的 UIViewControllers 中以编程方式生成 GUI 的缺点是您模糊了 MVC 模式中视图和控制器之间的区别。如果您可以将 GUI 生成保留到 loadView 方法,您仍然可以在生成信息的代码和显示信息的代码之间保持良好的界限。

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

        【讨论】:

        • 我是 iOS 开发新手,但不是 MVC 模式,我不知道为什么不能将视图与 ViewController 分开,并且仍然不使用 Interface Builder。我只需创建另一个类来生成视图并在控制器的 loadView 方法中使用它。在这门课中,它并没有真正衡量我会使用多少种方法,我仍然会保持 M-V-C 边界强大。这听起来不错? (可以肯定的是,我对 Objc 还没有那么丰富的经验 :)
        【解决方案4】:

        您经常想使用 Interface Builder;您希望通过编程接口执行此操作的原因有几个:

        • 这是一种更广为接受的创建用户界面的方式,因为它具有简单性和视觉上的优势,这是您无法通过简单地使用代码轻松实现的。
        • 它通过使用 Apple 鼓励开发人员遵循的标记等帮助您的应用程序符合 iPhone Human Interface Guidelines,以保持 iPhone 应用程序的一致性和可用性。

        尽管如此,编程接口有时比使用 Interface Builder 更有利的主要原因是用于需要多次创建的接口元素 - 例如,创建 n UIImageViews - 基于一个不能在 Interface Builder 中复制。编程接口允许这种灵活性,并且在这种情况下通常更有效。

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

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

        【讨论】:

          【解决方案5】:

          一个缺点是很容易错过连接插座或操作,并且对此进行故障排除可能会很痛苦。两个积极的方面是 UI 元素的定位、对齐和锚定要容易得多,而且当手机旋转时元素会自行重绘(这是一个动画过程,否则您需要使用编程元素自行处理)。

          【讨论】:

            【解决方案6】:

            就我目前所见,使用 XIB 生成视图非常容易。但由于我已经很久没有在 iPhone 上进行开发了,我只能将您引向这篇文章,该文章展示了一个示例 XIB 转换为 Objective-C 代码。

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

            界面生成器随时可用! :)

            我确信直接对视图进行编码不会显着提高性能。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-12-01
              • 2012-02-10
              • 2020-02-13
              • 1970-01-01
              • 2021-04-10
              • 1970-01-01
              • 2019-09-13
              相关资源
              最近更新 更多