故事板和Xib - iOS9

3

我知道这是一个被问得相当多的问题,但现在已经是iOS 9版本了,我仍然不清楚该怎么做。首先,根据所有可用数据,我似乎得出以下结论:

  • 使用Storyboards可以创建segue。[我从来不是这个答案的铁粉,因为对我来说,创建UI布局中最简单的部分通常是segue。]
  • Xibs可以让您创建多个顶级视图。(故事板与旧XIB方式) [我认为我从来没有经常使用过它,尽管它似乎相当有帮助。]
  • Storyboards-创建UITableViewCells更容易。[在我看来,为单元格创建xibs并在cellForRowAtIndexPath中调用它们更加清晰。]
  • Storyboards可能会变成一个巨大的超大文件,难以编辑。[我在实践中看到过这种情况,这是一个很大的缺点,但同时...]
  • Storyboards让您在一个地方排列所有视图,并显示布局。[对我来说,这似乎是一个很大的帮助。但是,多年来我发现在代码中完成这项工作更容易。这就引出了我的最后一个问题。]

这两个东西的性能方面如何。我的应用程序基本上是以下内容:

  • 一个由不超过5个互相关联的视图控制器组成的顶层层次结构。
  • 大量不相关、独立的视图控制器,包括滚动视图、表格视图和静态图像视图。
  • 自动布局、尺寸类等功能。

对于每个视图控制器,创建一个故事板和为每个视图控制器创建一个xib之间的性能如何?更重要的是,如何布局像我提到的这样的应用程序。


2
在iOS 9中,可以使用Storyboard References将不同的Storyboard链接在一起,因此您不再需要一个“超大文件”(除非您想要)。无论如何,Storyboard似乎是最好的选择,而且更重要的是,苹果似乎希望它们成为开发iOS和OS X应用程序的默认方式。 - Robotic Cat
我知道这是一个被问了很多次的问题,而且已经有很多人回答过了,而且没有什么改变。所以真的没有必要再回答一遍了。 - matt
可能是使用Storyboard和使用XIB的时机的重复问题。 - gran_profaci
嗯,我是在问我的特定情况,在那些情况下故事板会更好,而在某些情况下xib会更好,性能影响会是什么。我不想为单个视图创建故事板,但我也不想用约束使我的代码混乱。如果我表达不清楚,对不起。 - gran_profaci
2个回答

3

在布局视图控制器时,您肯定希望使用故事板 - 简单地因为您可以访问topLayoutGuidebottomLayoutGuide,而XIB编辑器不会给出这些东西。

对于其他视图,这只是一种偏好。我倾向于使用XIB来创建表格视图单元格,因为我 tend to 会在不同的屏幕上重复使用它们并且更喜欢将它们放在自己的文件中。

如果可能的话,我实际上会建议避免手动编写视图代码,因为这样就很难阅读和理解视图的布局方式,特别是对于那些没有编写原始代码的开发人员!对于简单的、动态大小的东西,这可能是可以接受的,但如果您想根据大小类别来布置不同约束的视图控制器,那么最终会变得有点混乱。

是的,处理这些文件的合并冲突很麻烦,但使用iOS 9,您可以更轻松地使用视图控制器引用将视图控制器拆分为不同的故事板。个人而言,我发现合并storyboards/XIBs的不便比必须编写所有内容的代码少得多。


1
听起来Storyboard是你当前项目的正确选择。然而,我的经验表明,在现实世界中,Xibs和Storyboards存在问题,原因如下:
  1. 从开发者到开发者极具个性化,因此作为团队构建良好的storyboards很棘手。
  2. 黑匣子,因此需要大量知识来掌握(难以置信的隐藏行为)。文档只涵盖最肤浅的语义。
  3. 国际化被分割,特别是如果您有未包含在Storyboard/Xib中的国际化消息,则会使其更加困难。
  4. 向后兼容性每年都会破坏/逐渐淘汰。如果您尝试与旧设备保持兼容性,则会变得更加困难。
我们的代码超过两个开发人员开始接触时,我们重新编写了所有内容,以避免使用Storyboard和Xibs,并且我们变得更加高效。
如果您必须处理任何这些现实情况,我强烈建议通过编程方式创建所有视图。甚至有一个应用程序可以使这更容易(并且更具可扩展性)。我与该公司或产品没有关系,但它无疑是更好的解决方案。

http://www.paintcodeapp.com/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接