【问题标题】:Should I use interface builder or not?我应该使用界面生成器吗?
【发布时间】:2011-02-25 23:44:11
【问题描述】:

我想详细了解在开发 iPhone/iPad 应用程序时使用界面生成器的优缺点。

我已经编写了一个相当复杂和定制的应用程序,现在在应用程序商店中,但是所有的界面都是手工编码的,因为它们相当复杂。我已经自定义了带有背景的导航栏和标签栏,表格视图单元格是手动绘制的以提高速度,并且某些视图很复杂且具有许多子视图可扩展。

我正在考虑是否开始使用界面生成器,但我不确定我会在多大程度上使用它以及它是否值得。它更快吗?东西还能轻松定制吗?

欢迎任何建议!

【问题讨论】:

    标签: iphone xcode interface-builder


    【解决方案1】:

    绝对没有理由不使用它。吓跑人们的一件事是他们使用其他 GUI 工具的经验,为他们生成代码的东西或其他一些混乱的东西。那么问题就变成了很难往返接口,一旦生成它们就不能轻易修改它们,因为将这些更改推回发出的代码很复杂。

    Interface Builder 不生成代码,它使用 NSArchiver 为 GUI 读取和写入实际的对象图。这有很多好处,首先是您可以轻松地往返界面并进行增量更改。真的很好用,用着。 :-)

    【讨论】:

    • 如果您必须动态生成视图,您将如何利用 IB?
    • @pgpb.padilla 通常你可以组合你用来在 IB 中构建视图的组件,然后根据你的动态生成需要实例化它们。一个常见的例子是一个表格,其中每一行都是动态生成的独立视图。较小的元素在 IB 中构建,而较大的配置是动态管理的。您心目中的动态生成是什么样的?
    • 我想我明白你在说什么,我在想的场景是这样的:假设你使用一个具有 UI 规范的 JSON 服务:控件标识符、类型(日期、输入、标签、等等)。控件的数量是可变的,具体取决于传递给服务的参数。
    • @pgpb.padilla 这取决于你正在做的事情的粒度,如果你正在制作一个通用的画布类型元素,任何东西都可以去任何地方,那么你可能没有任何事情让 IB 做。但是,如果您正在执行诸如渲染一组具有某些通用结构的对象之类的操作,则可以将 IB 用于通用部分。归根结底,IB 只是对象本身的图形编辑器(模序列化/反序列化),因此您所做的只是在编码和可视化编辑器之间来回移动。或者一个模板系统,如果它有助于以这种方式考虑反序列化......
    【解决方案2】:

    就我个人而言,我发现 Interface Builder 很难启动,有时它不会公开我想要编辑的所有属性(尽管这可能在较新的版本中发生了变化),所以通常我倾向于在代码中创建我的 UI。

    如果您使用 Interface Builder,请务必考虑本地化。 Apple 的iPhone Developer docs 建议将NIB 设为可翻译的本地化资源。这样,翻译人员可以查看新文本是否适合视图。不幸的是,这意味着翻译人员需要能够打开 NIB 文件并对其进行编辑(或者开发人员需要参与翻译过程)。

    就个人而言,我更喜欢提供本地化的文本资源并在代码中将文本设置到 UI。然后我在 Localizable.strings 文件中提供 cmets,说明文本可以有多长,并提供翻译人员可能需要的任何上下文。

    【讨论】:

      【解决方案3】:

      没有缺点。 为什么不使用它?它让一切变得更容易:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多