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