【问题标题】:Why is UIScreen.main.bounds reversed and not static?为什么 UIScreen.main.bounds 是反转的而不是静态的?
【发布时间】:2019-12-27 14:13:00
【问题描述】:

我发现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.宽度仍然小于高度。

我不明白。有没有办法获得屏幕尺寸的静态表示并且有意义?

编辑 另一个奇怪的现象是,如果我在viewDidLoad 中打印,UIScreen.main.bounds.height 会给出1024。但是如果我翻转方向然后回到原来的样子,然后重新启动模拟器,同样的打印会给出 768。为什么哦为什么。这太奇怪了。

【问题讨论】:

    标签: swift size screen-orientation uiscreen


    【解决方案1】:

    您咨询过docs on UIScreen.bounds吗?

    此矩形在当前坐标空间中指定,其中考虑了对设备有效的任何界面旋转。因此,当设备在纵向和横向之间旋转时,此属性的值可能会发生变化。

    然后在下面的另请参阅部分有一个指向nativeBounds 的链接。 Its doc 状态:

    此矩形基于纵向向上的设备。该值不会随着设备的旋转而改变。

    你有你正在寻找的静态边界。

    【讨论】:

      猜你喜欢
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      相关资源
      最近更新 更多