And*_*can 6 landscape screen-orientation ios
TL;DR:iOS 文档不同意Info.plist哪个方向(横向左与右)在哪一侧有主页按钮。我错过了什么吗?(例如,代码认为它所处的方向与设备知道它所处的方向之间存在区别。请参阅下面标记为 ? 的倒数第二个要点。)
但是,当我在 Xcode 中使用 General 复选框时,Info.plist文件显示相反:
上述信息足以清楚地说明矛盾。我的问题是:我是否遗漏了某些东西,或者我应该将其视为工具链/文档/API 中的长期残留物?
您会问,当应用程序在模拟器或设备上运行时,实际会发生什么?以下是我收集的数据的一个子集。为了您的阅读方便,我强调了LEFT 和RIGHT 这两个术语。你的大脑可能仍然会爆炸。
需要跟踪三个数量:
UIDevice.current.orientation说明了什么。当 General 复选框单独设置为 "Landscape LEFT" 时:
Info.plist文件说“横向(左主页按钮)”[即不同意文档]UIDevice.current.orientation == .landscapeRIGHT [即不同意Xcode,但同意模拟器菜单]UIDevice.current.orientation == .landscapeLEFT [与文档一致/与Xcode/plist相反]UIDevice.current.orientation == .landscapeRIGHT [与文档一致/与Xcode/plist相反]UIDevice.current.orientation == .landscapeRIGHT[即它与应用程序认为正在发生的事情一致,而不是与设备的物理方向一致]我认为主要是Xcode UI和info.plist之间的矛盾问题。Xcode UI 显示“设备方向”,而 info.plist 谈论“支持的界面方向”。但正如我们所知,这两者是不同的东西,所以肯定有问题。
假设在两者之间,info.plist获胜,那么这些字段(适用于 iPhone 和 iPad)用于指定支持的界面方向。即您也可以通过在特定视图控制器中覆盖相同的选项supportedInterfaceOrientations。
相反,引用的文档页面是关于设备方向的,它有自己的landscapeLeft定义:右侧的主页按钮。
现在,查看Interface Orientation Mask文档,没有关于什么是LandscapeLeft的真正细节,但旧的 Xcode UI 屏幕截图显示主页按钮位于左侧。例如,参见此 SO 线程:

编辑:界面方向文档页面详细介绍了什么是landscapeLeft:左侧的主页按钮,如旧屏幕截图所示。
结论
所以,总而言之,在我看来:
Xcode UI/info.plist 是关于支持的界面方向,它有自己的横向左/右定义
设备方向具有与横向左/右相反的定义