设计同时支持iOS8和iOS7的应用程序

设计同时支持iOS8和iOS7的应用程序,ios7,storyboard,ios8,xcode6,Ios7,Storyboard,Ios8,Xcode6,假设我想设计一个主细节应用程序,用于universal app的Xcode6主细节项目模板包括UISplitViewController和splitViewController,这在iOS8中是新的。我也想支持iOS7的应用程序 大体上 使用Xcode6设计通用应用程序的最佳方法是什么 同时支持iOS8和iOS7的故事板 对于不同的操作系统版本,使用单独的故事板更好吗 要使应用程序与这两个操作系统兼容,我们应该遵循哪些最佳实践 创建这样一个应用程序的“最佳方式”可能取决于你的应用程序到底需要做什

假设我想设计一个主细节应用程序,用于universal app的Xcode6主细节项目模板包括UISplitViewController和splitViewController,这在iOS8中是新的。我也想支持iOS7的应用程序

大体上

  • 使用Xcode6设计通用应用程序的最佳方法是什么 同时支持iOS8和iOS7的故事板
  • 对于不同的操作系统版本,使用单独的故事板更好吗
  • 要使应用程序与这两个操作系统兼容,我们应该遵循哪些最佳实践

  • 创建这样一个应用程序的“最佳方式”可能取决于你的应用程序到底需要做什么。根据需要的任何特殊行为,某些方法会比其他方法更好

    但在Xcode 6中使用单一的通用情节串连板是绝对可能的,它使用大小类,并且仍然针对iOS 7,包括iPhone和iPad,使用
    UISplitViewController
    。我已经成功地做到了这一点。要确保它在iOS 7和iOS 8上正常工作并保持一致,确实需要做很多工作。在执行各种新的自适应分段时,您必须稍微小心,因为这是iOS 7和iOS 8之间的巨大差异。例如,检测您何时拥有一个popover需要对两个不同的操作系统进行一些工作,处理展开序列将需要一些特殊处理,等等。这将需要大量测试。花点时间测试iPhone6plus,它会在屏幕上显示主界面和细节,但你可以控制它

    在经历了这段经历之后,我宁愿实现一个故事板,而不是两个故事板,每个操作系统一个,并且绝对不要为每个操作系统创建一个故事板,然后为每个设备类型创建一个故事板

    您将需要阅读,了解如何检测API可用性。如果您实现的API在iOS 7上不存在,应用程序将崩溃,因此您只需要在应用程序运行的操作系统上存在该函数时运行该代码。例如,您可能希望使用新的
    UIBlurEffect
    API,但iOS 7上不存在该API。了解弃用的含义,了解iOS 8中发生的变化将大有帮助。例如,不推荐使用旋转API以支持大小类特征集合,但这些集合在iOS 7上不可用,因此您需要继续使用不推荐使用的旋转API

    也可以看看今年的一些。他们有几个视频讨论新的自适应分段和通用故事板。请注意,这些故事板与iOS 7向后兼容,但也有一些大小类在iOS 7上不可用。有关更多信息,请参阅和我提供的答案。前几年的WWDC视频还讨论了如何支持多个操作系统、渐进式增强等

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

    讨论了使用统一故事板支持ios 7。虽然它并不特定于master detail应用程序,但我认为通过一些调整,您可以使其正常工作。