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

时间:2014-10-14 18:43:33

标签: ios storyboard ios-universal-app

我有一个iPhone和iPad项目。 iPad需要一个分割视图控制器。我们创建两个独立的故事板吗?一个用于iPhone(使用自动布局我们可以支持所有设备)和两个用于iPad。我怀疑的是它只是在初始视图中的区别。内部视图重复。你如何使用故事板?

6 个答案:

答案 0 :(得分:15)

在iOS 8中不再需要两个故事板!我们可以使用自适应UI来定制所有不同尺寸的iPad和iPhone的相同故事板。

你可以在http://www.raywenderlich.com/83276/beginning-adaptive-layout-tutorial

找到一个很好的教程

此外,您还可以在WWDC大会here中找到Apple提供的精彩视频,并搜索“使用UIKit构建自适应应用”

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

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

enter image description here

答案 1 :(得分:6)

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

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

答案 2 :(得分:3)

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

作为奖励,如果你使用低级mac,如mackbook air或旧mac,它还可以减少加载时间,并在使用storyboard时获得更好的响应能力。

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

我设法通过在iOS7和iPhone上调用不同的segue来实现该场景(在iOS8和iOS7上适用的通用故事板中拆分控制器)。 我的情况是这样的:

我有一个登录控制器,应该转换为主控制器(模态)。

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

如果来自左侧控制器,您有一个指向右侧导航控制器的细节segue(您应该),如果segue类型是"显示细节" (它应该)然后它将像iOS7-iPhone环境中的常规推送一样(这正是我们想要的)。

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

(用于确定平台是否为IOS8,如果我在iPhone / iPad上使用,我会使用标准

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