如何/是否在Xcode中制作通用Storyboard

7
在 Xcode 中创建 storyboard 文件时,必须选择是为 iPhone 还是 iPad。这意味着应该将 iPhone 和 iPad 的 UI 放在不同的 storyboard 中。这是否正确?
我的应用程序有多个故事板。虽然 Main.storyboard 文件在 iPhone 和 iPad 之间有很大的区别,但其他故事板几乎相同。唯一的区别可能是iPhone 上的转场是推送而在iPad上则是弹出,但这可以通过编程来处理。做两个故事板似乎非常愚蠢和冗余。
因此,如果制作一个“通用”的故事板,应该在 Xcode 中选择 iPhone 还是 iPad?会有影响吗?

1
你确实需要分离故事板,但是你可以非常容易地将一个故事板中的所有对象复制到另一个故事板中,然后仅调整小差异即可。所有的输出口和转场都会保留在那里,你只需要将输出口拖到类中,但这很快。 - Martin Koles
2个回答

7
从Xcode 6开始,我们可以为所有设备创建一个单一的统一故事板。更多信息请参见文档
iOS 8使处理屏幕大小和方向变得更加灵活多样。现在再也不用费心地为iPad和iPhone创建特定的故事板了,只需要设计一个通用接口,即可自适应屏幕大小和不同的方向变化。通过调整“size classes”(大小类)以及根据不同尺寸因素来调整用户界面,从而实现最好的体验。iOS 8共有两种类型的大小类:常规和紧凑。常规大小类表示大量的屏幕空间,例如iPad;或者表示采用了广泛使用的模式,例如在iPhone上滚动时提供假象的大量屏幕空间。每个设备都有一个大小类,无论垂直还是水平。这篇文章展示了iPad的本地大小类。由于iPad拥有大量的屏幕空间,在纵向和横向方向上均有常规大小类。
编辑: 只支持iOS 8(向后兼容仅适用于iOS 7)及以上版本。

1
这个程序兼容iOS7和iOS6吗? - AmineG
我认为IOS 7是被支持的。 - arundevma

6
您需要为每种设备创建单独的故事板。如果您删除iPad的故事板,那么您的应用程序将使用iPhone的故事板。当您在屏幕底部看到2x按钮时,您会意识到这一点。所有内容都会按比例缩放以适合更大的屏幕 - 图形将非常模糊。
唯一可行的解决方法是将所有内容从iPhone Storyboard复制粘贴到iPad storyboard中。只需按照以下步骤操作:
  1. 打开iPhone.storyboard,
  2. 按下CMD+A,
  3. 按下CMD+C,
  4. 切换到iPad.storyboard,
  5. 按下CMD+V,
  6. 您会看到所有屏幕、转场、属性和操作都被转移到了新的故事板中。您需要做的就是调整所有元素的框架,以适应新的屏幕尺寸。
别忘了,一个好的iPad应用程序不应该与iPhone版本相同。有很多很酷的东西可以在iPad上实现!

如果删除Main_iPad.storyboard,就同意使用2x按钮。然而,在我的情况下,我仍在使用Main_iPad(和Main_iPhone)。只是在应用程序的后面,我希望两个设备加载相同的storyboard(使用[UIStoryboard storyboardWithName:bundle:])。在这种情况下,它们确实是类似的用例。iPad UI或多或少以320x480pt的弹出窗口显示全屏iPhone UI,以获取相关功能,有点像iPad日历应用程序中的“创建事件”弹出窗口。如果两个设备加载完全相同的storyboard,是否会在运行时出现任何问题? - Steveo
我相信不会有任何问题,但我认为2倍按钮仍将存在。 - etolstoy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接