iOS 风景 左 vs 右 vs 错
iOS Landscape Left vs Right vs Wrong
TL;DR:iOS 文档不同意 Info.plist
关于哪个方向(横向左与右)在哪一侧有主页按钮。我错过了什么吗? (例如,代码认为所处的方向与设备知道所处的方向是有区别的。见下- 到下面标记为 ❓ 的最后一个要点。)
UIDeviceOrientation
的文档说
但是,当我在 Xcode 中使用常规复选框时,Info.plist
文件显示 相反的:
以上信息把矛盾表现的很清楚了。我的问题是:我是不是遗漏了什么,或者我应该把它当作 toolchain/docs/API 中长期存在的问题?
当应用程序在模拟器或设备上运行时,实际发生了什么?以下是我收集的部分数据。为了您的阅读方便,我强调了“左”和“右”这两个词。你的大脑可能还会爆炸。
要跟踪三个数量:
- Xcode/plist 怎么说
- 模拟器菜单项的内容[或设备方向是]
- API 通话
UIDevice.current.orientation
说了什么。
当常规复选框设置为 仅 到 "Landscape LEFT":
Info.plist
文件显示 "Landscape (LEFT home button)" [即不同意文档]
- 模拟器启动
- 屏幕图像上下颠倒[即正确]
- 选中硬件 > 方向菜单项 "Landscape RIGHT" [即不同意 Xcode/plist]
- 主页按钮在左侧[即菜单项和主页按钮位置之间的关系与文档一致]
UIDevice.current.orientation == .landscapeRIGHT
[即不同意Xcode,但同意模拟器菜单]
- 选择菜单项硬件 > 方向 > 横向左侧
- 将屏幕图像上下颠倒[正确行为:无图像自动旋转]
- 将主页按钮放在右侧[当然]
UIDevice.current.orientation == .landscapeLEFT
[与docs/contrary至Xcode/plist一致]
- 启动 iPhone 主页按钮在左侧:
- 正确显示屏幕图像
UIDevice.current.orientation == .landscapeRIGHT
[与docs/contrary至Xcode/plist一致]
- 旋转 phone 180°
- 将主页按钮放在右侧[当然]
- ❓
UIDevice.current.orientation == .landscapeRIGHT
[即它与应用程序认为正在发生的事情一致,而不是设备的物理方向]
- iPad 与 iPhone
的行为相同
我觉得主要是XcodeUI和info.plist之间的矛盾问题。 Xcode UI 显示“设备 方向”,而 info.plist 表示 "Supported Interface Orientation"。但正如我们所知,这两者是不同的东西,所以那里肯定有问题。
假设,在两者之间,info.plist 胜,那么这些字段(对于iPhone和iPad)用于指定支持界面方向。 IE。您也可以通过 supportedInterfaceOrientations
.
在特定的视图控制器中覆盖相同的选项
相反,引用的文档页面是关于 Device 方向的,它自己定义了什么是 landscapeLeft:右侧的主页按钮。
现在,查看界面方向掩码docs, there's no real detail on what is landscapeLeft, but old Xcode UI screenshots show that home button is to the left. See e.g. from this SO thread:
EDIT:界面方向 doc page 而不是详细说明什么是 landscapeLeft:主页按钮在左侧,如图所示在旧的屏幕截图中。
结论
所以,总而言之,在我看来:
Xcode UI/info.plist是关于支持的界面方向,它有自己的横向定义left/right
设备方向与横向定义相反left/right
TL;DR:iOS 文档不同意 Info.plist
关于哪个方向(横向左与右)在哪一侧有主页按钮。我错过了什么吗? (例如,代码认为所处的方向与设备知道所处的方向是有区别的。见下- 到下面标记为 ❓ 的最后一个要点。)
UIDeviceOrientation
的文档说
但是,当我在 Xcode 中使用常规复选框时,Info.plist
文件显示 相反的:
以上信息把矛盾表现的很清楚了。我的问题是:我是不是遗漏了什么,或者我应该把它当作 toolchain/docs/API 中长期存在的问题?
当应用程序在模拟器或设备上运行时,实际发生了什么?以下是我收集的部分数据。为了您的阅读方便,我强调了“左”和“右”这两个词。你的大脑可能还会爆炸。
要跟踪三个数量:
- Xcode/plist 怎么说
- 模拟器菜单项的内容[或设备方向是]
- API 通话
UIDevice.current.orientation
说了什么。
当常规复选框设置为 仅 到 "Landscape LEFT":
Info.plist
文件显示 "Landscape (LEFT home button)" [即不同意文档]- 模拟器启动
- 屏幕图像上下颠倒[即正确]
- 选中硬件 > 方向菜单项 "Landscape RIGHT" [即不同意 Xcode/plist]
- 主页按钮在左侧[即菜单项和主页按钮位置之间的关系与文档一致]
UIDevice.current.orientation == .landscapeRIGHT
[即不同意Xcode,但同意模拟器菜单]- 选择菜单项硬件 > 方向 > 横向左侧
- 将屏幕图像上下颠倒[正确行为:无图像自动旋转]
- 将主页按钮放在右侧[当然]
UIDevice.current.orientation == .landscapeLEFT
[与docs/contrary至Xcode/plist一致]
- 启动 iPhone 主页按钮在左侧:
- 正确显示屏幕图像
UIDevice.current.orientation == .landscapeRIGHT
[与docs/contrary至Xcode/plist一致]
- 旋转 phone 180°
- 将主页按钮放在右侧[当然]
- ❓
UIDevice.current.orientation == .landscapeRIGHT
[即它与应用程序认为正在发生的事情一致,而不是设备的物理方向]
- iPad 与 iPhone 的行为相同
我觉得主要是XcodeUI和info.plist之间的矛盾问题。 Xcode UI 显示“设备 方向”,而 info.plist 表示 "Supported Interface Orientation"。但正如我们所知,这两者是不同的东西,所以那里肯定有问题。
假设,在两者之间,info.plist 胜,那么这些字段(对于iPhone和iPad)用于指定支持界面方向。 IE。您也可以通过 supportedInterfaceOrientations
.
相反,引用的文档页面是关于 Device 方向的,它自己定义了什么是 landscapeLeft:右侧的主页按钮。
现在,查看界面方向掩码docs, there's no real detail on what is landscapeLeft, but old Xcode UI screenshots show that home button is to the left. See e.g. from this SO thread:
EDIT:界面方向 doc page 而不是详细说明什么是 landscapeLeft:主页按钮在左侧,如图所示在旧的屏幕截图中。
结论
所以,总而言之,在我看来:
Xcode UI/info.plist是关于支持的界面方向,它有自己的横向定义left/right
设备方向与横向定义相反left/right