【问题标题】:iOS Simulator has different screen height between ios 7.1 and ios 8.2 for the same iPhone 5s对于相同的 iPhone 5s,iOS 模拟器在 ios 7.1 和 ios 8.2 之间具有不同的屏幕高度
【发布时间】:2015-04-30 13:48:16
【问题描述】:

iOS 模拟器测试 iOS 7.1 和 iOS 8.2 环境时出现了一个奇怪的问题。当我尝试获取 iPhone 5s 的屏幕尺寸时,结果有所不同。这是模拟器中的错误吗?还是这就是 iOS 7 和 iOS 8 的区别?

非常感谢您的建议。

我的代码:

override func viewDidLoad() {
    super.viewDidLoad()

    println("Screen bounds: \(UIScreen.mainScreen().bounds)")

iPhone 5s (8.2) 模拟器打印结果:

屏幕边界:(0.0,0.0,320.0,568.0)


iPhone 5s (7.1) 模拟器打印结果:

屏幕边界:(0.0,0.0,320.0,480.0)

并且有顶部和底部的黑带占据模拟器iOS 7.1屏幕。

【问题讨论】:

  • 在 iOS 8.x 上,引入了 UIScreen.mainScreen().nativeBounds。看看吧
  • 我认为 iOS8 中的 nativeBounds 与之前 iOS 版本中的 bounds 相同,因为 iOS8 中的 bounds 与方向相关。然而,nativeBounds 似乎并没有促成这里的奇怪行为。在 7.1 模拟器中运行的其他应用程序呢?如果顶部和底部的黑色条带仍然存在,我想这很可能是模拟器的错误。否则,您可能需要检查 iOS7.1 应用的配置。
  • 我建议您使用启动画面然后运行您的代码。使用飞溅后,这个黑堤问题将得到解决,您也将获得正确的高度。

标签: ios uiscreen


【解决方案1】:

iPhone 5s 有一个 640x1136 像素的显示屏,它是 2 倍视网膜,因此是 320x568 点。

您的 320x480 结果以及信箱的存在与在 iPhone5s 上以兼容模式运行的应用程序一致,因为它与旧屏幕的尺寸相匹配。

【讨论】:

  • 嗨杰里米,你能给我进一步解释吗?在哪里可以找到兼容模式的信箱存在?
  • 兼容模式由 UIKit 提供,适用于为旧设备设计的应用程序,而不是当前运行的应用程序(例如:在较新的 iPhone 或 iPad 上运行的旧 iPhone 的小屏幕应用程序)。系统会对它们进行信箱化,以保持与作者原意的准确纵横比。在您的情况下,系统认为您的应用程序没有针对 iPhone 5 大小的设备进行优化。
【解决方案2】:

那是因为在 iOS 8 中屏幕尺寸变得依赖于方向 请检查此线程 iOS screen size becoming orientation dependent

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 2021-03-29
    • 1970-01-01
    • 2014-05-06
    相关资源
    最近更新 更多