Iphone 故事板与代码

Iphone 故事板与代码,iphone,ios,xcode,ipad,cocoa-touch,Iphone,Ios,Xcode,Ipad,Cocoa Touch,我在一家公司工作,我们有几个iOS开发人员,我们使用GIT一起在同一个项目中工作。我们在开发过程中从不使用故事板或.xib文件,因为几乎不可能正确地合并它们 随着iOS7的引入,我想到了故事板和所有UI编码方式之间的根本区别,而不使用Interface Builder 这里有人这样做吗?最重要的是,在故事板中有什么是在XCode 5的代码中做不到的吗?我将把你的问题分成两部分:笔尖和故事板 就NIB而言,源代码管理问题可能是痛苦的,但可以管理,主要是因为每个视图控制器通常有一个NIB文件。您可以

我在一家公司工作,我们有几个iOS开发人员,我们使用GIT一起在同一个项目中工作。我们在开发过程中从不使用故事板或.xib文件,因为几乎不可能正确地合并它们

随着iOS7的引入,我想到了故事板和所有UI编码方式之间的根本区别,而不使用Interface Builder


这里有人这样做吗?最重要的是,在故事板中有什么是在XCode 5的代码中做不到的吗?

我将把你的问题分成两部分:笔尖和故事板

就NIB而言,源代码管理问题可能是痛苦的,但可以管理,主要是因为每个视图控制器通常有一个NIB文件。您可以想象这样一种情况:两名开发人员在使用NIB的应用程序的两个不同部分上工作,没有任何合并问题。故事板是不同的,因为只有一个文件描述应用程序的大部分(如果不是全部的话)UI。显然,那里发生冲突问题的可能性要大得多

如果正确使用,笔尖可以非常有用并且节省时间。举个例子:iPad上的iPhoto应用程序有一个非常复杂的用户界面。该用户界面的绝大多数都是按程序设计的。然而,该应用程序也使用NIB加载图形元素,然后以代码的形式进行布局。这就是画笔面板的工作原理——所有画笔都是在笔尖中创建的。这意味着苹果不必有几十个相同的image/image-view-alloc/init代码。所有的创建都可以在一个NIB中进行(在iPhoto用户界面上的WWDC 2012会议中对此进行了详细讨论——这非常值得追踪)

因此,NIB——有时很好,可以节省大量时间,虽然存在合并问题,但在许多情况下,它们可以轻松管理和处理

然后我们来到故事板。故事板很有趣。一方面,它们对新加入该平台的简单应用程序和开发人员非常有用。我刚刚将基于
UINavigationController
的应用程序从NIB转换为故事板,并发现了一些显著的时间节约(尤其是在表格视图方面,因为通过故事板,您可以利用原型单元)

然而,如果你正在与几个开发人员一起进行一个大型项目,我不相信故事板有那么大的好处。正如您所说,合并冲突会带来一些大问题,与NIB不同的是,解决这些问题并不容易,因为单个脚本文件控制着您的所有应用程序UI

这就是我所建议的(并且可以无视我!)——如果你现在正在开发应用程序,并且在代码中完全完成你的布局/ UI,考虑一下NIB是否能节省你的时间。它们很可能不是——它们不适合所有人——但至少值得考虑。你可能会惊讶于有多少大型应用程序实际使用NIB(正如我提到的,iPhoto,还有许多由苹果提供的内置应用程序,以及许多由大型团队提供的流行第三方应用程序)。我可能不会考虑故事板,除非你是一个唯一的开发者工作在一个相当简单的导航应用程序。这不是以任何方式写故事板——我喜欢使用它们——只是它们不太适合协作

有人在回复您的问题时发表了此评论-我想讨论一下:


在故事板中没有什么可以做的,在代码中也没有什么不能做的。对象、手势识别器、序列甚至约束都可以通过编程方式进行构建


这在技术上是正确的,但事实上,故事板/笔尖中的某些东西比代码要容易得多。自动布局就是一个很好的例子。虽然您当然可以完全用代码管理自动布局约束,但严酷的现实是,ASCII自动布局表示比IB中的视觉表示更难使用。在XCode 5上尤其如此,IB中的自动布局有了巨大的改进(我不能详述它,因为它仍在NDA之下,但苹果公开谈论的有点)。

< P>你应该考虑这些问题: 开发时间-

显然,当从头开始创建新的应用程序时,使用xcode UI设计器更快、更容易学习。 以编程方式,您必须在代码中定义要设置的每个元素属性。 使用故事板将使开发过程更快

代码重用-

在使用情节提要时,您必须使用在情节提要文件中添加额外隐藏代码的项目符号将UI元素绑定到控制器。在控制器之间创建分段时会添加相同的存根。 这种添加的隐藏代码将使在您将构建的其他应用程序中重用控制器变得更加困难。 如果您计划大量重用控制器代码,那么以编程方式创建UI元素将更合适

源代码集成-

当几个开发人员提交对文件的更改时,解决冲突是一件常见的事情。 使用情节提要创建和更改UI元素其他更改会添加到情节提要文件中,这有时会使冲突的解决有点棘手。
另一方面,当以编程方式更改UI元素时,只有您将要进行的更改才会添加到控制器文件中。

对我来说,故事板唯一的缺点是加载时间慢,导航故事板时通常会出现延迟。我不是说2-5个视图控制器应用程序。我是说10个或更多

如果我真的需要使用故事板(UITableView原型单元)或普通XIB,我个人的偏好是更小的故事板

用简单的代码来做这件事只不过是一件小事