我们是否需要为通用应用程序使用2个Storyboard?

我有一个iPhone和iPad的项目。 iPad需要一个分割视图控制器。 我们是否创build两个单独的故事板? 一个用于iPhone(使用自动布局,我们可以支持所有设备)和两个iPad。 我的怀疑仅仅是在初始观点上的差异。 内部视图重复。 你的方法将如何与故事板?

在iOS 8中不再需要两个故事板! 我们可以使用自适应用户界面来定制所有不同大小的iPad和iPhone的故事板。

你可以在这里find一个很好的教程http://www.raywenderlich.com/83276/beginning-adaptive-layout-tutorial

此外,您还可以在这里的 WWDC会议上通过苹果find一个不错的video,并search“用UIKit构build适应性应用程序”

基本上我们可以通过定义不同大小类别的故事板中UI的元素来处理不同的屏幕大小。 我们也可以为不同大小的类定义不同的自动布局约束。

这些都是在iOS 8中可能的大小类(我从https://medium.com/@getaaron/ios-8-development-tips-for-iphone-6-and-iwatch-1c772554ffe0

在这里输入图像说明

对于iOS 7和之前的版本,是的,使用两个故事板和两个完全不同的界面,因为iPhone上没有拆分视图控制器。

对于iOS 8,使用一个故事板,并在iPad和iPhone上使用UISplitViewController。 从Xcode 6 Master-Detail应用程序模板的通用版本中创build一个新项目,以查看它的工作原理! 它自动是iPad上的分割视图控制器和iPhone上的导航界面。

即使有自适应用户界面,我个人更喜欢在不同的故事板上工作。 对于复杂的布局,这种方式更简单,并且不会轻易破坏其他屏幕尺寸的布局。 有太多限制可以使得难以维护。 另外移动对象层次结构将破坏其他屏幕的布局。

作为奖励,如果您使用像MacBook Air或旧式Mac这样的低级别Mac,那么当您使用Storyboard时,它也可以减less加载时间并获得更好的响应能力。

在iOS 8上,你不需要两个故事板,因为一个故事板可以同时处理iPhone和iPad。 在该操作系统的手机上也支持UISplitViewController。

对于早期版本的iOS,您需要两个故事板。

你可以有不止两个故事板。 如果您无法通过resize类别/自动布局来完成iPhone和iPad之间共享的视图控制器的工作,则可以将该部分分割为单独的故事板。 然后,您可以创build第三个故事板,其中包含共享的视图控制器。 然后,您可以在代码中实例化该故事板,并使用它来实例化其视图控制器。

我设法通过在iOS7和iPhone上调用不同的segue来实现这种情况(在iOS8和iOS7上都可以工作的通用故事板中分割控制器)。 我的情况是这样的:

我有一个login控制器应该延续到主控制器(模态)。

在iOS8或iPad上使用segue指向分割视图控制器,而在iOS7-iPhone上使用另一个直接指向分割控制器左侧导航控制器的segue(完全绕过它)。

如果从左侧的控制器,你有一个细节segue指向正确的导航控制器(你应该),如果seguetypes是“显示细节”(它应该),那么它将像在iOS7-iPhone环境(这正是我们想要的)。

在我注意到的事情上,细节segue的IOS7-iPhone场景中的目标控制器成为右侧导航的根视图控制器(即使segue指向nav),因此,如果在prepareForSegue有一些代码,需要适应它以不同的方式处理它们)

(为了确定平台是否是IOS8,如果我使用的是iPhone / iPad的成语,我使用这个标准

 [[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0 and UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)