TL; DR:iOS文档不同意Info.plist
的观点(左右方向的哪一侧有Home键)。我想念什么吗? (例如,代码认为所处的方向与设备知道所处的方向之间存在区别。请参阅倒数第二个要点在下面标记为❓)。
但是,当我在Xcode中使用“常规”复选框时,Info.plist
文件表示相反:
以上信息清楚地表明了矛盾。我的问题是:我是否缺少某些东西,还是应该将其视为工具链/ docs / API中的持久残cru?
当您在模拟器或设备上运行应用程序时,实际上会发生什么 ?以下是我收集的数据的子集。为了您的阅读方便,我强调了术语“左”和“右”。您的大脑可能仍会爆炸。
要跟踪三个数量:
UIDevice.current.orientation
怎么说。将“常规”复选框设置为“仅 ”为“左横向” :
Info.plist
文件中显示“横向(向左移动主页按钮)” [即不同意文档] UIDevice.current.orientation == .landscapeRIGHT
[即不同意Xcode,但同意模拟器菜单] UIDevice.current.orientation == .landscapeLEFT
[与docs /与Xcode / plist一致] UIDevice.current.orientation == .landscapeRIGHT
[与docs /与Xcode / plist一致] UIDevice.current.orientation == .landscapeRIGHT
[即它与应用程序认为进行的操作一致,而不与设备的物理方向一致。] 答案 0 :(得分:0)
我认为主要是Xcode UI和info.plist之间的矛盾。 Xcode UI显示“ 设备方向”,而info.plist则说“支持的接口方向”。但是据我们所知,这是两回事,所以那里肯定有问题。
假设两者之间的info.plist 获胜,然后使用这些字段(适用于iPhone和iPad)指定受支持的界面方向。即您还可以通过supportedInterfaceOrientations
在特定的视图控制器中覆盖相同的选项。
相反,引用的文档页面是关于设备方向的,它对 landscapeLeft 的定义是自己的:右侧的主页按钮。
现在,看着界面方向遮罩docs,没有关于 landscapeLeft 的真正细节,但是旧的Xcode UI屏幕截图显示主页按钮是左边。参见例如来自this SO thread:
编辑:界面方向doc page而是详细说明了 landscapeLeft :左侧的主页按钮,如旧的屏幕截图所示。
结论
总而言之,在我看来:
Xcode UI / info.plist与支持的界面方向有关,它具有自己的左右横向定义
设备方向与左/右横向定义相反