【问题标题】:Storyboards vs. Xibs - iOS9故事板与 Xibs - iOS9
【发布时间】:2016-01-10 12:55:38
【问题描述】:

我知道这个问题已经被问了很多,但它是 iOS 9,我仍然不知道该怎么做。对于初学者,这是我从所有可用数据中得出的推测:

  • 故事板可让您创建转场。 [我从来都不是这个答案的忠实粉丝,因为 segues 通常是为我创建 UI 布局的最不痛苦的部分。]
  • Xibs 可以让您创建多个顶级视图。 (Storyboards vs. the old XIB way) [我不认为我曾经使用过这么多,虽然它看起来很有帮助。]
  • 故事板 - 创建 UITableViewCells 更容易。 [在我看来,为单元格创建 xib 并在 cellForRowAtIndexPath 中调用它们更简洁]。
  • 故事板可以变成一个难以编辑的超大文件。 [我在实践中看到过这种情况,这是一个很大的缺点,但同时......]
  • 故事板可让您将所有视图排列在一个位置,同时显示布局。 【这似乎对我帮助很大。但是,多年来,我发现在代码中执行此操作要容易得多。这就引出了我的最后一个问题。]

这两件事的性能方面是什么。我的应用程序基本上如下:

  • 互连视图控制器的顶级层次结构,不超过 5 个。
  • 大量不同的、独立的视图控制器,范围从 Scroll Views 到 TableViews 再到静态 Imageviews。
  • 自动布局、尺寸等级、作品。

对于每个视图控制器,为每个视图控制器创建故事板与为每个视图控制器创建 xib 的性能如何。更重要的是,什么是布局我提到的应用程序的好方法。

【问题讨论】:

  • iOS 9 中的独立 Storyboard 可以使用 iOS 9 中的 Storyboard References 链接在一起,因此您不再拥有 1 个“超大文件”(除非您愿意)。无论如何,Storyboards 似乎是要走的路,而且(更重要的是)Apple 似乎希望它们成为在 iOS 和 OS X 中开发应用程序的默认方式。
  • “我知道这是一个已经被问了很多次的问题”并且已经回答了很多次,但没有任何改变。所以真的没必要再回答了。
  • 嗯,我问的是我的特殊情况,我有情节提要更好的场景和某些 xibs 更好的场景,性能影响是什么。我不想为单个视图创建故事板,但我不想让我的代码因约束而混乱。对不起,如果我不清楚。

标签: ios iphone xcode uistoryboard xib


【解决方案1】:

听起来故事板很适合您当前的项目。但是,我的经验是 Xib 和 Storyboard 在现实世界中存在问题,原因如下:

  1. 从开发人员到开发人员都非常独特,因此作为一个团队构建好的故事板很棘手

  2. 黑匣子,因此需要大量知识才能掌握(难以置信的隐藏行为数量)。文档中只涉及最肤浅的语义。

  3. 拆分会使国际化变得更加困难,尤其是当您的故事板/Xib 中没有包含国际化消息时。

  4. 向后兼容性每年都会中断/随着时间的推移保证会弃用。如果您试图保持与旧设备的兼容性,这尤其困难。

只要有两个以上的开发人员开始接触我们的代码,我们就重写了所有内容以完全避免使用 Storyboard 和 Xib,并且我们变得更加高效。

如果您必须处理这些现实世界中的任何一种情况,我强烈建议您以编程方式创建所有视图。甚至还有一个应用程序可以让这变得更容易(并且更具可扩展性)。我与这家公司或产品没有任何关系,但这是一个更好的解决方案。

http://www.paintcodeapp.com/

【讨论】:

    【解决方案2】:

    您肯定希望使用情节提要来布置视图控制器 - 仅仅因为您可以访问 topLayoutGuidebottomLayoutGuide,而 XIB 编辑器不会给您。

    对于其他视图,这是一个偏好问题。我倾向于将 XIB 用于表格视图单元格,因为我倾向于在不同的屏幕上重用它们,并且更喜欢将它们放在自己的文件中。

    我实际上建议不要在可能的情况下手动编写视图代码,因为阅读和计算视图的布局方式要困难得多,尤其是对于最初没有编写代码的开发人员!对于简单的、动态大小的东西,这可能很好,但是如果你试图根据大小类来布置具有不同约束的视图控制器,那么它最终会有点混乱。

    是的,处理这些文件的合并冲突很痛苦,但是在 iOS 9 中,您可以使用视图控制器引用更轻松地将视图控制器拆分为不同的故事板。就个人而言,我发现合并故事板/ XIB 的不便之处在于必须用代码编写所有内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-26
      • 2013-10-26
      • 2015-12-15
      • 2016-03-19
      • 2015-02-25
      • 2015-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多