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