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

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

当前用于设置方向的代码:

- (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 +设备以及iPhone8模拟器。这似乎也不是iOS11的问题,因为我的iPhone7当前正在运行iOS11。我目前遇到的唯一设备是iPhoneX模拟器。

最佳答案

看来iPhone X不支持上下颠倒的方向;参见https://forums.developer.apple.com/message/268015。苹果工作人员说:“这是设计使然。我们将在将来的版本中更新文档以反射(reflect)这一点。”

至少在sim卡中,您仍然会收到方向更改通知,但是正如您所发现的,如果您对它采取行动,可能会发生坏事。就我而言,我没有异常(exception),但是我的用户界面没有正确重绘。

我正在添加代码以检测颠倒的iPhone X并防止UI重绘;它可以在sim卡中使用,我们必须等待,看看它是否可以在真实设备上使用(幸运的是,我的颠倒用例仅涉及一个耳机插孔设备,因此iPhone X的颠倒损失了)对我来说没什么大不了的)。

结果是,我们那些使用照明端口传感器而要居于首位的用户将无法为iPhone X用户提供与“较小型” iPhone相同的可用性,至少没有没有一些繁琐的UI烦琐的UI拼图游戏,涉及很多仿射变换可旋转和/或翻转元素以使其上下颠倒,同时仍然符合手机的想法。叹。

10-08 05:30