2014-10-10 77 views
10

假设我想要设计一个主细节应用程序,通用应用程序的Xcode6主细部项目模板包含UISplitViewController,splitViewController是iOS8中的新功能。我也想支持iOS7的应用程序。同时支持iOS8和iOS7的设计应用程序

一般

  1. 什么是设计使用Xcode6 故事板同时支持iOS8上和iOS7一个通用的应用程序的最佳方式?
  2. 为不同的OS版本使用单独的故事板会更好吗?
  3. 我们应该遵循哪些最佳做法来使应用程序与两个操作系统兼容?
+0

伟大的问题! – Arjuna 2014-10-10 08:26:17

+0

[This thread](http:// stackoverflow。com/questions/24172860/how-can-xcode-6-adaptive-uis-back-back-compatible-with-ios-7-and-ios-6)讨论了支持统一故事板的ios 7。虽然它不是特定于主细节的应用程序,但我认为通过一些调整你可以使它工作。 – tbraginets 2014-10-22 21:36:51

回答

4

创建此类应用程序的“最佳方式”很可能取决于您的应用程序需要做什么。根据所需的特殊行为,某些方法会比其他方法更好。

但是,在Xcode 6中使用一个通用故事板是绝对有可能的,该故事板使用Size Classes,并且仍然使用UISplitViewController以iPhone 7和iPhone 7为目标。我已经成功地完成了这一点。它确实需要很多工作才能确保它在iOS 7和8上正常工作并保持一致。在执行各种新的自适应游戏时,您必须小心谨慎,因为这是iOS 7和8之间的巨大差异。例如,检测你什么时候有popover需要为这两个不同的操作系统做一些工作,处理unwind segues需要一些特殊的处理等,这将需要很多测试。专门测试iPhone 6 Plus的时间 - 在横向上,它将显示屏幕上的主屏幕和详细信息,但您可以控制它。

通过经验去后,我会而实行单一的故事板而不是两个故事板,一个为每个操作系统,绝对远离每个操作系统创建一个分镜走,然后为每个设备类型。

想要了解如何检测API可用性,您需要阅读SDK Compatibility Guide。如果您实现了iOS 7中不存在的API,则该应用程序将崩溃,因此只有在该应用程序运行的操作系统存在此功能时才需要运行该代码。例如,您可能想要使用新的UIBlurEffect API,但iOS 7中不存在。了解弃用意味着什么,并且了解iOS 8中发生了哪些变化将极大地有所帮助。例如,旋转API不赞成使用Size Class特征集合,但这些API在iOS 7上不可用,因此您需要继续使用弃用的旋转API。

还检查了一些WWDC videos从今年。他们有几个视频,讨论新的适应性赛段和通用故事板。请注意,这些故事板是向后兼容iOS 7的,但有些尺寸类别在iOS 7上不可用。请参阅this question以及我提供的答案以获取更多信息。前几年的WWDC视频也讨论了如何支持多种操作系统,逐步增强等。

当然,当你有问题/问题堆栈溢出是一个很好的资源。我在过去几个月发布的很多问题都与这个问题有关,如何修改UISplitViewController行为,获得对两种操作系统的支持,使用单个故事板和新的自适应游戏等。您可能希望阅读通过这些来了解在开发应用程序时可能遇到的问题。

相关问题