以编程方式创建视图 VS。笔尖

Posted

技术标签:

【中文标题】以编程方式创建视图 VS。笔尖【英文标题】:Creating Views programmatically VS. nib 【发布时间】:2013-04-23 06:07:09 【问题描述】:

我很想知道是否有人在比较 iPhone 应用程序的加载时间性能与 NIB 中布局的视图与完全以编程方式布局的视图(这里有一个类似的 question)进行比较。

完全以编程方式布局的视图真的比在 NIB 中布局的视图有任何优势吗?

【问题讨论】:

除了性能之外,如果您在团队中工作并且必须通过 git 合并内容,则以编程方式创建的视图更容易处理。 【参考方案1】:

根据 Apple 的说法,XIB 文件的加载时间比以编程方式构建 UI 的时间长。 在 WWDC 讲座中看到了这一点。

如果性能很重要,请在代码中而不是在 IB 中构建您的 UI。

【讨论】:

最好给出参考链接。 具体是哪个视频我不记得了,但我可以找找。这与上一届 WWDC(2012 年)截然不同。【参考方案2】:

在代码上这样做有一些好处:

    最好与多人一起工作。提交到存储库时更容易解决冲突。 您依赖于您在代码中看到的内容,而不是隐藏在 nib 文件中的内容(您在不知情的情况下选择了一些讨厌的选项)。您拥有:所见即所得。

带笔尖:

    我会说它的开发速度更快。 代码没有被界面的每一个细节“污染”。 我也会留下来,对于没有太多经验的人来说更容易。

关于性能,其实可以查this。

【讨论】:

【参考方案3】:

当我开始学习 ios 编程时,我是在 xib 文件中构建 UI。但是当我开发了一些项目后,我开始只是编写代码来实现我的 UI。

以编程方式构建 UI 有一些好处:

首先,通过编写代码,您可以清楚地记住视图层次结构,并且视图层次结构对于有效地实现您的 UI 非常重要。

其次,如果您的 UI 很复杂,例如带有一些动画或变换,您将从编写 UI 中受益匪浅。甚至有时候你可能不使用 UIView 来构建 UI,你可能会使用 CALayer 来完成一些 xib 文件无法构建的效果。

此外,当您习惯以编程方式构建 UI 时,您会喜欢上它,因为您只需在 .m 文件中编码,无需担心 xib 文件。

但是,如果您只是 iOS 编程的初学者,那么开始使用 xib 文件就可以了。

(Apple现在提供StoryBoard,我没学过,你可以学习一下,看看有没有新东西。)

【讨论】:

视图层次结构在界面构建器中也是可见的。尽管您不能通过代码完成所有事情,但完全忽略 IB 并不是正确的方法。当可以通过 IB 轻松完成时,我为什么要通过代码构建整个视图层次结构。 其实通过代码,我们可以实现所有用IB构建的东西。只是哪种方法更有效。刚开始学习iOS编程的时候就喜欢IB,IB真的好学好用,但是当我开发更复杂的UI时,我觉得代码可以更有效率。 @Rakesh 确保在代码中可以实现在 IB 中完成的一切。但只是它需要更多的努力(无论你打字多快。:))。我想说的是最有效的方法不会是唯一的 IB/仅代码方法。这将是两者的混合。我试图把我的想法变成一个答案。 @菲尼亚斯【参考方案4】:

IMO 将两者结合起来是正确的选择。使用界面构建器来定义基本布局(即不会随时间发生太大变化的 xib)和视图的默认选项,其余的可以通过编程方式完成(特定的调整和效果)。这应该可以在一定程度上解决源代码控制和性能问题。

尽管一旦我们开始以编程方式创建视图,我们每次都继续这样做,却没有意识到在 Interface Builder 中可以用更少的努力来完成同样的事情。毕竟,如果它是我们正在构建的 GUI,最好有一个视觉参考。

【讨论】:

以上是关于以编程方式创建视图 VS。笔尖的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式将笔尖添加到 UIStackView

Swift - 以编程方式创建视图时的 Lazy Var vs. Let(节省内存)

iOS:以编程方式在以编程方式创建的滚动视图中创建标签

以编程方式创建的视图不显示

如何以编程方式创建带有约束的视图

以编程方式创建形状视图并在集合视图单元格上使用