对于相同的 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