我已经写了一段时间的iOS应用程序,逐渐从完全使用编程方式进行UI开发转变为广泛使用Interface Builder。现在我正在考虑在一些新项目中使用新的Storyboarding功能,但我没有足够的经验或知识来计算这样做的优缺点。 有人可以给出一些关于何时使用Storyboarding带来回报以及何时是浪费时间的例子或信息吗?
我已经写了一段时间的iOS应用程序,逐渐从完全使用编程方式进行UI开发转变为广泛使用Interface Builder。现在我正在考虑在一些新项目中使用新的Storyboarding功能,但我没有足够的经验或知识来计算这样做的优缺点。 有人可以给出一些关于何时使用Storyboarding带来回报以及何时是浪费时间的例子或信息吗?
Storyboards的优点
StoryBoardSegues
识别导航/模式关系UITableViewCell
可以节省时间Storyboards的缺点
StoryBoardSegues
在我的经验中有些固定,可能需要经常使用prepareForSegue
这些看起来有点肤浅,我想我没有认真考虑过...一开始我对storyboard非常热衷,但现在我已经回到了IB甚至只是编程视图配置...我使用得越多,就越不喜欢它们,感觉它们越来越像一个噱头/浪费时间。
编辑
我写这篇答案已经有几年了。出于纪念的目的,我将其保持不变,尽管某些观点可能已不再相关(例如它需要iOS 5+)。
经过一段时间后,我的看法对storyboards并没有改变。正如其他人所提到的,如果你是在单独开发一个视图较少的应用程序,它们还可以;但与源代码控制和协作合作时,它们就成为一个真正的痛点。此外,我更喜欢一个文件一个对象,而storyboards显然捆绑在一起(IB也是,但程度较轻)。
如果我要编写一个打算长期维护的应用程序,我会选择编程式视图配置而不是IB,但一定会选择IB而不是storyboards。
Storyboarding存在的另一个缺点是,如果存在冲突,则合并可能非常困难甚至不可能。
更新:我还想到了一个问题,它将逻辑分散到两个地方。如果你的segue没有按照预期工作,可能是因为prepareForSegue中有误或者你错误地命名了segue。最终来说,以编程方式实现这些功能并不那么难。
在最新的 WWDC(2013)上,苹果的开发人员强烈推荐使用故事板和内置的 IB 工具来为您完成大部分代码,而不是手动编写代码,因为这样你更有可能避免过时的问题,并通过自动转换来利用功能更新。
唯一的缺点是,在故事板上允许 git 协作非常困难,因为每次提交都会导致冲突。
如果你是一个单独的程序员,你应该总是使用故事板。
我通过raywenderlich网站的教程学习了storyboarding,其中有很多关于storyboard的内容。
这是网站链接: http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1
Storyboard的优点:
1) 在开始开发应用程序之前,您可以查看应用程序的所有屏幕。
2) 您可以直观地看到每个屏幕之间的关系。
3) 在UITableView中,您可以使用原型单元格和静态单元格在storyboard中设计表视图,从而帮助减少编写代码的量。
4) 如果您需要处理其他人的代码,则可以通过查看storyboard在短时间内更好地理解应用程序的流程。
5) 您可以通过从storyboard应用Retina格式来设置iPhone 4和iPhone 5的用户界面,而无需一遍又一遍地运行应用程序。
6) 如果您正在进行客户端工作,则某些客户想在开始开发之前看到应用程序的原型,在这种情况下,storyboard会对您有很大的帮助。
Storyboard的缺点:
1) 对于storyboard,您将需要一个大屏幕,特别是在iPad的情况下。
2) 我在将视图从其他应用复制到storyboard时也遇到了困难。
3) 当多个开发人员使用git repository时,我也在storyboard中遇到了问题。
通过阅读和理解这些优缺点,您可以自行判断何时使用storyboard。
我和你有类似的背景 - 我开始时主要通过编程构建我的iOS UI,因为IB不是很用户友好,但最近我决定越来越多地使用IB,因为它更适合设计UI,并且对于标准元素也能很好地工作。
随着新版Xcode的推出,我转向了Storyboard,因为它们提供了应用程序的完整视图。可以在单个文件中生成完整的UI(包括所有视图),这可用于原型设计,并且我可以在编写第一行代码之前让同事查看。与使用Photoshop或类似工具进行设计相比,它要好得多且更容易。
但是,如果您使用大量自己的UI元素/控件或使用不同的“引擎”(cocos2d、OpenGL等)的内容,则通常最好通过编程生成UI,因为这些“引擎”并没有真正与IB / Storyboards集成。
一个词(不要)
故事板的最大缺点之一是除了导致两个或更多人无法共同使用它的git冲突之外,如果项目变得非常庞大,你有40多个屏幕,如果你足够疯狂,在故事板中的任何视图控制器中移动任何东西只需一个像素,你将需要非常长的编译时间,可能需要超过5分钟才能构建应用程序,当然,别让我开始谈论归档以便给某人提供应用程序的adhoc。在这种痛苦的经历之后,我完全回到了老式的xib文件,并在一个巨大的火焰庆典中删除了故事板文件。