ios – iPhone X:什么触发兼容模式与全屏模式?

我试图在iPhone X上以全屏模式运行相当复杂的现有代码库(基本SDK iOS 9.0; Swift 4.0; Xcode 9.1),到目前为止,它只能以“兼容模式”运行(即,带有黑色顶部和底部边框的信箱).

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

关于iPhone X上运行的应用程序实际上是以“兼容模式”还是全屏模式显示时,似乎存在相当多的含糊不清和/或错误信息.

一些变量可能包括

> Base SDK项目设置
>是否有发布故事板
>是否有iPhone X发布图像及其大小
>是否启用了安全区域指南

……可能还有更多.

除了苹果公司(和其他人)所说的,有没有人明确地隔离了参数的哪些排列’翻转开关’,并导致应用程序在iPhone X上以一对一的方式运行?

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

提前谢谢了!

解决方法

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

>针对iOS 11.0(或更新版)SDK进行编译
>拥有适当的启动屏幕资源 – 具有自动布局的启动故事板或iPhone X在资产目录中启动图像.

使用安全区域指南不是退出兼容模式信箱的一部分,但是在退出兼容模式后确保您的UI正确适合iPhone X至关重要.对于许多应用程序,只需执行上面的步骤1和2将导致UI伸展以填满整个屏幕,隐藏重要控件(或令人不舒服地靠近)圆角,原点指示器和传感器凹口.

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

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...