iPhone X:是什么触发了兼容模式和全屏模式?

iPhone X: What triggers compatibility mode vs. full-screen mode?

我正在尝试将一个相当复杂的现有代码库(基础 SDK iOS 9.0;Swift 4.0;Xcode 9.1)添加到 运行 全屏模式 在 iPhone X 上,到目前为止,它在 “兼容模式” 中只有 运行s(即,带有黑色顶部和底部边框的信箱)。

但是,满足相同要求的全新 Xcode 项目 运行 在全屏模式下很好。

似乎也有相当多的歧义 and/or 关于 运行 在 iPhone X 上实际显示“兼容模式”与全屏的应用程序的错误信息模式。

一些变量可能包括:

...甚至更多。

除了 Apple(和其他人)所说的之外,有没有人明确地 准确地隔离了哪些参数排列“翻转开关”,并导致应用程序 运行 在 iPhone X?

上的一个对另一个

[请注意:出于商业原因,至少目前,我们仍然希望该应用能够 运行 iOS 9 及更高版本。]

非常感谢!

要在 iPhone X 上突破信箱,您的应用需要:

  1. 针对 iOS 11.0(或更新版本)SDK
  2. 进行编译
  3. 要拥有适当的启动屏幕资产 — 带有自动布局的启动故事板,或资产目录中的 iPhone X 启动图像。

使用安全区域指南并不是摆脱兼容模式信箱的一部分,但确保您的 UI 正确适合 iPhone X [=16= 是必不可少的]after 退出兼容模式。对于许多应用程序,仅执行上面的步骤 1 和 2 将导致 UI 伸展以填满整个屏幕,将重要控件隐藏在(或令人不舒服地靠近)圆角、主页指示器和传感器槽口后面。

正如@rmaddy 指出的那样,您仍然可以使用 iOS 11 SDK 进行构建并部署回不到 10%(并且在撰写本文时迅速下降)的 iOS 设备在 iOS 9 上,只需在 Xcode 项目中设置最低部署目标,并确保对 iOS 10 和 iOS 11 API 的任何使用都受到可用性检查的保护。