故事板与 Xibs - iOS9
Storyboards vs. Xibs - iOS9
我知道这个问题已经被问了很多次了,但是 iOS9 我仍然不清楚该怎么做。首先,这是我从所有可用数据中推测出的内容:
- 故事板可让您创建转场。 [我从来都不是这个答案的忠实粉丝,因为 segues 通常是为我创建 UI 布局最不痛苦的部分。]
- Xibs 可以让您创建多个顶层视图。 (Storyboards vs. the old XIB way)[我从来没有用过这么多,虽然它看起来很有帮助。]
- 故事板 - 创建 UITableViewCells 更容易。 [在我看来,为单元格创建 xibs 并在 cellForRowAtIndexPath 中调用它们更简洁]。
- 故事板可以变成一个难以编辑的超大文件。 [我在实践中看到过这种情况,这是一个很大的缺点,但同时...]
- 故事板让您可以将所有视图安排在一个地方,并显示布局。 [这对我来说似乎是一个很大的帮助。但是,多年来我发现在代码中这样做要容易得多。这就引出了我的最后一个问题。]
这两件事的性能方面是什么。我的应用基本上如下:
- 互连视图控制器的顶级层次结构,不超过 5 个。
- 大量不同的、独立的视图控制器,范围从滚动视图到表视图再到静态图像视图。
- Autolayout,尺寸 类,作品。
对于这些视图控制器中的每一个,为它们中的每一个创建故事板与为它们中的每一个创建 xib 的性能是什么。更重要的是,什么是布置我提到的应用程序的好方法。
听起来 Storyboard 很适合您当前的项目。然而,根据我的经验,Xibs 和 Storyboards 在现实世界中存在问题,原因如下:
开发人员之间的差异非常大,因此作为一个团队构建好的故事板非常棘手
黑匣子,因此它们需要大量的知识才能掌握(难以置信的隐藏行为)。文档中仅涵盖了最表面的语义。
拆分后国际化变得更加困难,特别是如果您有未包含在 Storyboard/Xib.
中的国际化消息
向后兼容性每年都会中断/随着时间的推移保证弃用。如果您试图保持与旧设备的兼容性,这尤其困难。
只要有两个以上的开发人员开始接触我们的代码,我们就会重写所有内容以完全避免 Storyboard 和 Xibs,并且我们变得更有效率。
如果您必须处理这些现实世界中的任何情况,我衷心建议您以编程方式创建所有视图。甚至有一个应用程序可以使这更容易(并且更具可扩展性)。我与这家公司或产品没有任何关系,但它确实是一个更好的解决方案。
您肯定想使用故事板来布置视图控制器 - 仅仅是因为您可以访问 XIB 编辑器不会给您的 topLayoutGuide
和 bottomLayoutGuide
。
对于其他视图,这是一个偏好问题。我倾向于将 XIB 用于 table 视图单元格,因为我倾向于在不同的屏幕上重复使用它们并且更喜欢将它们放在自己的文件中。
我实际上建议尽可能不要手动编写视图代码,因为阅读和弄清楚视图的布局要困难得多,尤其是对于最初没有编写代码的开发人员!对于简单的、动态大小的东西,这可能没问题,但是如果你试图根据大小 class 来布置具有不同约束的视图控制器,它最终会有点混乱。
是的,处理这些文件的合并冲突很痛苦,但是使用 iOS9 您可以使用视图控制器引用更轻松地将视图控制器拆分到不同的故事板中。就我个人而言,我发现合并 storyboards/XIBs 带来的不便是必须用代码编写所有内容的次要弊端。
我知道这个问题已经被问了很多次了,但是 iOS9 我仍然不清楚该怎么做。首先,这是我从所有可用数据中推测出的内容:
- 故事板可让您创建转场。 [我从来都不是这个答案的忠实粉丝,因为 segues 通常是为我创建 UI 布局最不痛苦的部分。]
- Xibs 可以让您创建多个顶层视图。 (Storyboards vs. the old XIB way)[我从来没有用过这么多,虽然它看起来很有帮助。]
- 故事板 - 创建 UITableViewCells 更容易。 [在我看来,为单元格创建 xibs 并在 cellForRowAtIndexPath 中调用它们更简洁]。
- 故事板可以变成一个难以编辑的超大文件。 [我在实践中看到过这种情况,这是一个很大的缺点,但同时...]
- 故事板让您可以将所有视图安排在一个地方,并显示布局。 [这对我来说似乎是一个很大的帮助。但是,多年来我发现在代码中这样做要容易得多。这就引出了我的最后一个问题。]
这两件事的性能方面是什么。我的应用基本上如下:
- 互连视图控制器的顶级层次结构,不超过 5 个。
- 大量不同的、独立的视图控制器,范围从滚动视图到表视图再到静态图像视图。
- Autolayout,尺寸 类,作品。
对于这些视图控制器中的每一个,为它们中的每一个创建故事板与为它们中的每一个创建 xib 的性能是什么。更重要的是,什么是布置我提到的应用程序的好方法。
听起来 Storyboard 很适合您当前的项目。然而,根据我的经验,Xibs 和 Storyboards 在现实世界中存在问题,原因如下:
开发人员之间的差异非常大,因此作为一个团队构建好的故事板非常棘手
黑匣子,因此它们需要大量的知识才能掌握(难以置信的隐藏行为)。文档中仅涵盖了最表面的语义。
拆分后国际化变得更加困难,特别是如果您有未包含在 Storyboard/Xib.
中的国际化消息
向后兼容性每年都会中断/随着时间的推移保证弃用。如果您试图保持与旧设备的兼容性,这尤其困难。
只要有两个以上的开发人员开始接触我们的代码,我们就会重写所有内容以完全避免 Storyboard 和 Xibs,并且我们变得更有效率。
如果您必须处理这些现实世界中的任何情况,我衷心建议您以编程方式创建所有视图。甚至有一个应用程序可以使这更容易(并且更具可扩展性)。我与这家公司或产品没有任何关系,但它确实是一个更好的解决方案。
您肯定想使用故事板来布置视图控制器 - 仅仅是因为您可以访问 XIB 编辑器不会给您的 topLayoutGuide
和 bottomLayoutGuide
。
对于其他视图,这是一个偏好问题。我倾向于将 XIB 用于 table 视图单元格,因为我倾向于在不同的屏幕上重复使用它们并且更喜欢将它们放在自己的文件中。
我实际上建议尽可能不要手动编写视图代码,因为阅读和弄清楚视图的布局要困难得多,尤其是对于最初没有编写代码的开发人员!对于简单的、动态大小的东西,这可能没问题,但是如果你试图根据大小 class 来布置具有不同约束的视图控制器,它最终会有点混乱。
是的,处理这些文件的合并冲突很痛苦,但是使用 iOS9 您可以使用视图控制器引用更轻松地将视图控制器拆分到不同的故事板中。就我个人而言,我发现合并 storyboards/XIBs 带来的不便是必须用代码编写所有内容的次要弊端。