TL;DR:iOS 文档不同意Info.plist
关于哪个方向(横向左与右)的主页按钮位于哪一侧。我错过了什么吗? (例如,代码的方向有区别thinks它所在的位置以及设备的方向knows它在。请参阅下面标记为 ❓ 的倒数第二个要点。)
该文档用于UIDeviceOrientation https://developer.apple.com/documentation/uikit/uideviceorientation says
但是,当我在 Xcode 中使用常规复选框时,Info.plist
文件说opposite:
上述信息已经足够清楚地说明了这一矛盾。我的问题是:我是否遗漏了一些东西,或者我应该将其视为工具链/文档/API 中持久的残骸?
实际上是什么happens当应用程序在模拟器或设备上运行时,您会问吗?以下是我收集的数据的子集。为了您阅读方便,我强调了术语“左”和“右”。你的大脑可能仍然会爆炸。
需要跟踪三个数量:
- Xcode/plist 说什么
- 模拟器菜单项的含义[或设备方向is]
- API 调用了什么
UIDevice.current.orientation
says.
当设置常规复选框时solely到“左风景”:
- The
Info.plist
文件显示“横向(左侧主页按钮)”[即不同意文档]
- The Simulator launches
- 屏幕图像朝上 [即正确]
- 选中“硬件”>“方向”菜单项“横向右”[即不同意 Xcode/plist]
- 左侧有主页按钮 [即菜单项和主页按钮位置之间的关系与文档一致]
-
UIDevice.current.orientation == .landscapeRIGHT
[IE。不同意 Xcode,但同意模拟器菜单]
- Choosing menu item Hardware > Orientation > Landscape LEFT
- 将屏幕图像翻转为上下颠倒[正确行为:无图像自动旋转]
- 将主页按钮放在右侧[当然]
-
UIDevice.current.orientation == .landscapeLEFT
[与文档一致/与 Xcode/plist 相反]
- Launching iPhone with home button on LEFT:
- 正确显示屏幕图像
-
UIDevice.current.orientation == .landscapeRIGHT
[与文档一致/与 Xcode/plist 相反]
- Rotating the phone 180°
- 将主页按钮放在右侧[当然]
- ❓
UIDevice.current.orientation == .landscapeRIGHT
[IE。与app内容一致thinks正在发生,与设备的物理方向无关]
- iPad 的行为与 iPhone 相同
我认为主要是Xcode UI和info.plist之间的矛盾问题。 Xcode UI 显示“Device方向”,而 info.plist 谈到“支持界面但正如我们所知,这两者是不同的东西,所以肯定有问题。
假设在两者之间, info.plistwins那么这些字段(适用于 iPhone 和 iPad)用于指定支持的界面方向。 IE。您也可以通过以下方式在特定视图控制器中覆盖相同的选项supportedInterfaceOrientations
.
相反,引用的文档页面是关于Device方向,有自己的定义景观左:主页按钮在右侧。
现在,看着界面定向面罩docs https://developer.apple.com/documentation/uikit/uiinterfaceorientationmask,没有关于什么是真正的细节景观左,但旧的 Xcode UI 屏幕截图显示主页按钮位于左侧。参见例如从这个所以线程 https://stackoverflow.com/questions/12933089/i-want-to-make-my-appliaction-only-in-landscape-orientation-in-ios-both-ios-5-a:
EDIT:界面方向doc page https://developer.apple.com/documentation/uikit/uiinterfaceorientation相反有关于什么是的详细信息景观左:主页按钮位于左侧,如旧屏幕截图所示。
结论
所以,总而言之,在我看来:
Xcode UI/info.plist 是关于支持的界面方向,它有自己的横向左/右定义
设备方向具有与横向左/右相反的定义
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)