我发现UIScreen.main.bounds
确实很难掌握。它们不一致,并且它们的值似乎不反映设备。它们不是静态的,而是在设备旋转时发生变化,这确实令人困惑,并且通常这些值与您期望的相反。
例如:
纵向模式
print("Portrait", " width: ", UIScreen.main.bounds.size.width, " height: ", UIScreen.main.bounds.size.height)
给予
Portrait width: 1024.0 height: 768.0
如果我错了,请纠正我,但是宽度不应该小于iPad Pro模拟器上的高度吗?
风景模式也令人困惑。
print("landscape", " width: ", UIScreen.main.bounds.size.width, " height: ", UIScreen.main.bounds.size.height)
给予
landscape width: 768.0 height: 1024.0
这意味着1. UIScreen.main.bounds
不是静态的,而是随屏幕方向而变化的。2.宽度仍然小于高度。
我不明白。有没有一种方法可以获取屏幕尺寸的静态表示,并且很有意义?
EDIT另一个奇怪的现象是,如果我在UIScreen.main.bounds.height
中进行打印,则1024
会给出viewDidLoad
。但是,如果我改变方向然后又回到原来的状态,然后重新启动模拟器,则相同的打印结果将显示为768。为什么?为什么。这太奇怪了。
您咨询过docs on UIScreen.bounds
吗?