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

Yat*_*B L 10 storyboard ios7 xcode6 ios8

假设我想设计一个主详细信息应用程序,通用应用程序的Xcode6主 - 详细项目模板包括UISplitViewController和splitViewController是iOS8中的新功能.我也想支持iOS7的应用程序.

一般来说

  1. 使用支持iOS8和iOS7的Xcode6故事板设计通用应用程序的最佳方法是什么?
  2. 为不同的操作系统版本使用单独的故事板更好吗?
  3. 为使应用程序与这两种操作系统兼容,我们应遵循哪些最佳做法?

Jor*_*n H 4

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

但绝对可以在 Xcode 6 中使用单个通用故事板,该故事板使用 Size Classes,并且仍然针对 iOS 7(iPhone 和 iPad),使用UISplitViewController. 我已经成功地做到了这一点。确实需要做很多工作才能确保它在 iOS 7 和 8 上正常工作并看起来一致。在执行各种新的自适应转场时,您必须小心一点,因为这是 iOS 7 和 8 之间的巨大差异例如,检测何时有弹出窗口将需要针对两个不同的操作系统进行一些工作,处理展开转场将需要一些特殊处理,等等。这将需要大量的测试。花时间测试 iPhone 6 Plus - 在横向模式下,它会在屏幕上显示主图和细节,但您可以对此进行控制。

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

您需要阅读SDK 兼容性指南,了解如何检测 API 可用性。如果您实现 iOS 7 上不存在的 API,则应用程序将会崩溃,因此您只需在运行应用程序的操作系统存在该函数时才需要运行该代码。例如,您可能想要利用新的UIBlurEffectAPI,但 iOS 7 上不存在该 API。了解弃用的含义以及了解 iOS 8 中发生的更改将非常有帮助。例如,旋转 API 已被弃用,取而代之的是 Size Class 特征集合,但这些 API 在 iOS 7 上不可用,因此您需要继续使用已弃用的旋转 API。

另请查看今年的一些WWDC 视频。他们有几个视频讨论新的自适应转场和通用故事板。请注意,这些故事板向后兼容 iOS 7,但有些尺寸类别在 iOS 7 上不可用。请参阅此问题和我提供的答案以获取更多信息。前几年的 WWDC 视频还讨论了如何支持多种操作系统、渐进增强等。

当然,当您有疑问/问题时,Stack Overflow 是一个很好的资源。我在过去几个月发布的许多问题都与这个主题完全相关,如何修改UISplitViewController行为,获得对两种操作系统的支持,使用单个故事板和新的自适应转场等。您可能希望通读这些可以帮助您了解以相同方式开发应用程序时可能会遇到的情况。