无法在 iPhone X 上将界面方向旋转为上下颠倒

Cannot rotate interface orientation to portrait upside down on iPhone X

我们有一个应用程序使用连接到音频插孔(或 iPhone7 或更高版本中的闪电端口)的配件。在某些方向上它需要 运行,具体取决于 iOS 设备.

目前在任何 iPhone 的模拟器或实际设备中设置设备方向都没有问题,除了 iPhoneX 模拟器。

设置方向的当前代码:

- (BOOL)shouldAutorotate {
    return YES;
}

- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
    //device checks omitted
    return UIInterfaceOrientationMaskPortraitUpsideDown;
}

Target settings with orientations enabled

堆栈跟踪:

TF uncaught exception reason : Supported orientations has no common orientation with the application, and [RootNavigationController shouldAutorotate] is returning YES
2017-10-05 09:35:02.692945+0200 [65045:74145368] *** Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and [RootNavigationController shouldAutorotate] is returning YES'

这适用于 iPhone5、iPhone6、iPhone6+、iPhone7 和 iPhone7+ 设备以及 iPhone 8个模拟器。这似乎也不是 iOS11 问题,因为我的 iPhone7 目前是 运行ning iOS11。我目前遇到问题的唯一设备是 iPhoneX 模拟器。

iPhone X 似乎不支持倒置方向;参见 https://forums.developer.apple.com/message/268015。一位 Apple 员工说,"It is by design. We're getting documentation updated in a future release to reflect that."

您仍然会收到方向更改通知,至少在 sim 中是这样,但正如您发现的那样,如果您采取行动,可能会发生坏事。就我而言,我没有得到异常,但我的 UI 没有正确重绘。

我正在添加代码来检测倒置的 iPhone X 并防止 UI 重绘;它在 sim 中工作,我们将不得不等待,看看它是否会在真实设备上工作(幸运的是,我的颠倒用例只涉及一个 headphone-jack 设备,所以失去了上行-iPhone X 对我来说不是什么大事)。

结果是我们这些使用照明端口传感器的人想要成为最重要的人将无法为 iPhone X 用户提供与 "lesser" iPhone 相同的可用性s,至少不是没有一些非常乏味的 UI jiggery-pokery 涉及大量仿射变换以旋转 and/or 翻转元素 出现 颠倒同时仍然符合phone 认为 它正在 做什么。叹息