iphone - 在两者之间进行选择 - Interface Builder 或通过代码创建

标签 iphone xcode cocoa-touch interface-builder

当我开始 iPhone 开发时,我更喜欢使用界面生成器在我的应用程序中创建 View 。随着时间的推移,我考虑了通过代码创建应用程序的选项,我真的觉得使用它很舒服。
现在,当我知道创建用户界面的两种方法时,我怀疑该遵循哪种方法。我一直在思考在哪里使用IB以及在哪里使用代码。在开始使用我的应用程序之前,我如何确定应该以哪种方式创建我的 UI

最佳答案

有很多因素会影响您的选择。这可以归结为个人喜好,但使用 Interface Builder 有一些优点。

首先要认识到的是,UI 设计本质上是一项视觉任务。 Interface Builder 可以让您比在代码中更快地创建和修改 UI。您不必无休止地调整代码中的 CGRect 值,然后重新编译、测试并重复此过程,而是可以获得有关更改的直接视觉反馈。这意味着您可以更有效地完善和完善 UI,甚至无需花费太多时间或精力即可测试完全不同的布局。

另一个重要的一点是,如果您可以在 Interface Builder 中创建和布局控件,则意味着 View Controller 中的代码更少。更少的代码总是一件好事(更少的错误,更容易维护,......)。

所以我相信您应该尝试在 Interface Builder 中定义尽可能多的布局和属性。对于那些喜欢“完全控制”事物的人来说,这可能很难。许多年前,可视化 GUI 编辑器因做错事而闻名,开发人员通常会避免使用它们,而不是手动完成所有工作。但是 Interface Builder 非常擅长它的功能,并且您可以在需要时轻松地深入研究代码。

纯在代码中创建控件的情况是当您需要动态创建多个对象时,例如照片库的缩略图按钮,或者您有自定义布局要求。

例如,如果您有一个标签,其高度在运行时是动态的,并且您想要在其下方布局一堆控件(考虑其高度),则只能在代码中完成(更新: iOS 6 的自动布局现在可以做到这一点)。您可以在代码中创建和布局所有内容,或者您仍然可以使用 Interface Builder 创建控件,并在 XIB 中指定它们的任意位置,当您在代码中布局它们时,这些位置会被修改。在我的一些 XIB 中看到这种情况并不少见:

enter image description here

顶部的按钮可以在 IB 中完全创建和布局,但下面的 ImageView 需要在运行时计算它们的图像和位置。所以我们只是给他们在 XIB 中的任意位置。有些人可能会觉得这很丑,但它节省了编写代码来创建 ImageView 并设置其属性的时间和精力。再说一遍,代码越少越好。

其他时候,您可能希望使用代码来设置某些显式属性。假设您有一个 ImageView 需要接收触摸事件,因为它添加了一些手势识别器。您需要将“用户交互已启用”属性设置为 TRUE。最好在代码中执行此操作,因为要求更明显,并且您可以留下适当的注释来说明为什么要设置该属性。如果您需要删除并重新创建一堆 View ,那么像在界面生成器中那样“丢失”设置也更困难。

关于iphone - 在两者之间进行选择 - Interface Builder 或通过代码创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6385516/

相关文章:

cocoa-touch - 使用图像行创建 UI ScrollView

iphone - 当对象属性为只读且已计算(派生)时的 valueforkey

xcode - 快速 UITableView 设置 rowHeight

c++ - 为什么当我 "run"Xcode 产生一个更大的文件?

iphone - 在 View 显示之前立即滚动到表中的行

ios - 如何在iOS中测试空对象?

iphone - 更改自定义 UITableViewCell iphone 中的文本颜色

ios - 手势识别器 :shouldBeRequiredToFailByGestureRecognizer crashing

iphone - Xcode 4.2 中的空设置包

xcode - 为什么 Xcode 4 持续显示 git 存储库的 "Checking source control status"?