对于相同的 iPhone 5s,iOS 模拟器在 ios 7.1 和 ios 8.2 之间具有不同的屏幕高度

Posted

技术标签:

【中文标题】对于相同的 iPhone 5s,iOS 模拟器在 ios 7.1 和 ios 8.2 之间具有不同的屏幕高度【英文标题】:iOS Simulator has different screen height between ios 7.1 and ios 8.2 for the same iPhone 5s 【发布时间】: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 应用的配置。 我建议您使用启动画面然后运行您的代码。使用飞溅后,这个黑堤问题将得到解决,您也将获得正确的高度。 【参考方案1】:

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

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

【讨论】:

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

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

【讨论】:

以上是关于对于相同的 iPhone 5s,iOS 模拟器在 ios 7.1 和 ios 8.2 之间具有不同的屏幕高度的主要内容,如果未能解决你的问题,请参考以下文章

对于 iPhone - 但不是 iOS 模拟器 - UIToolbar UIBarButtonItem 将仅在长按时突出显示,而不是在点击时突出显示

Xcode 5.1 无法使用 Ios 7.1.1 连接到我的 Iphone 5S

indexPath.row 在 iPhone 6 模拟器上的计算不正确,但不是 4s/5/5s/6plus

带有 MacOS 12.0.1 的 Xcode 13.1 无法创建 iPhone 5s 模拟器

ios framework 简单制作

Ionic 3. 如何使用 cli 定位特定版本的 iOS 模拟器?