我已经编写了一段时间的 iOS 应用程序,并逐渐从完全以编程方式编写 UI 到密集使用 Interface Builder。我现在正在考虑在我的一些新项目中使用新的故事板功能,但我没有足够的经验或知识来计算这样做的优缺点。 任何人都可以提供一些示例或信息,说明使用故事板何时获得回报以及何时浪费时间?
6 回答
故事板的优点
- 很酷 - 设计界面的温和方式
- 用于
StoryBoardSegues
识别导航/模态关系 - 如果您的应用程序支持多种设备,那么组织不同视图的好方法(通过故事板文件而不是命名等)
- 很适合做原型
- 原型
UITableViewCell
可以节省时间
故事板的缺点
- 这是一个运行时特性,所以我相信它只在 iOS 5 中可用
StoryBoardSegues
根据我的经验,有点僵硬,你可以利用prepareForSegue
很多- 和 IB 一样,对其他显示引擎和工具包不太友好
- 很难为单个视图或一组视图共享设计 - 您必须全部发送或不发送
这些看起来有点肤浅,我想我没有考虑太多......起初我对故事板很感兴趣,但现在我已经恢复到 IB 甚至只是程序化视图配置......使用它们,我越不喜欢它们,就越觉得它们是噱头/浪费时间。
编辑
几年前我写了这个答案。尽管有些点可能不再相关(即它需要 iOS 5+ 的事实),但我已将其保留为后代。
一段时间后,我对故事板的看法没有改变。正如其他人所提到的,如果您单独开发一个需要管理的视图很少的应用程序,它们还可以,但是对于源代码控制和协作来说,它们会成为真正的痛苦。此外,我更喜欢一个文件一个对象,故事板显然将东西捆绑在一起(就像 IB 一样,但程度较小)。
如果我正在编写一个打算长期维护的应用程序,我会使用 IB 上的程序化视图配置,但绝对是 IB 上的故事板。
没有提到 Storyboard 的另一个缺点是,如果存在冲突,即使不是不可能,合并也会非常困难。
更新:我还想到它把逻辑放在两个地方。如果你的 segue 没有做正确的事情,可能是因为 prepareForSegue 中的错误,或者可能是因为你错误地命名了你的 segue。最后,以编程方式做事并不难。
在最新的 WWDC (2013) Apple Devs 强烈建议使用故事板和内置的 IB 东西来为您完成大部分代码,而不是手动编写,因为您更有可能避免弃用并通过自动转换利用功能更新.
唯一的缺点是难以在故事板上进行 git 协作,因为几乎每次提交都会有冲突。
如果你是一个单独的程序员,你应该总是使用故事板。
我和你有相似的背景 - 我开始主要以编程方式构建我的 iOS UI,因为 IB 并不是真正的用户友好,但最近决定越来越多地使用 IB,因为它更适合设计 UI 并且适用于标准 -元素。
使用新的 Xcode 我切换到 Storyboard,因为它们提供了应用程序的完整视图。可以在单个文件中生成完整的 UI(包含所有视图),该文件可用于原型设计,并且我可以在编写第一行代码之前查看我的同事。它比使用 Photoshop 或类似工具进行设计要好得多,也容易得多。
但是,如果您使用大量自己的 UI 元素/控件或使用不同“引擎”(cocos2d、OpenGL 等)的东西,通常最好以编程方式生成 UI,因为这些“引擎”并未真正与 IB 集成/故事板。
我已经按照 raywenderlich 网站上的教程学习了故事板,并且有很多关于故事板的内容。
这是网站的链接:http ://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1
故事板的优点:
1) 在开始开发应用程序之前,您可以看到应用程序的所有屏幕。
2)您可以直观地看到每个屏幕之间的关系。
3)它可以帮助减少代码量,特别是在 UITableView 的情况下,您可以使用原型单元格和静态单元格在情节提要中设计您的 TableView。
4)如果您必须编写其他代码,您可以通过在短时间内查看故事板来更好地了解应用程序的流程。
5) 您可以通过应用 Storyboard 中的 Retina 外形来设置 iPhone 4 和 iPhone 5 的用户界面,而无需一次又一次地运行应用程序。
6) 如果你在做基于客户的工作,那么一些客户希望在开始开发之前看到应用程序的原型,这里的故事板可以帮助你很多。
故事板的缺点:
1)对于情节提要,您将需要一个大屏幕,特别是在 iPad 的情况下。
2) 在将视图从其他应用程序复制到情节提要时,我也遇到了困难。
3) 当多个开发人员使用 git 存储库在同一个项目上工作时,我也遇到了故事板的问题。
通过阅读和了解优点和缺点,您可以判断自己何时使用故事板。
一个词(不要) 故事板的最大缺点之一,除了 git 冲突使两个或更多人无法工作之外。但是,如果项目变得如此之大,并且您有 +40 个屏幕,如果您足够疯狂,可以在情节提要中的任何视图控制器中仅移动一个像素,那么您将有一个非常巨大的编译时间,您可以构建您的app 并让它在 5 分钟以上运行,当然不要让我从归档开始给一些 app 的 adhoc 。
在这次痛苦的经历之后,我完全回到了旧的 goldy great xib 文件,并在一场盛大的火灾庆祝活动中删除了故事板文件。