[UIScreen mainScreen].scale 对于非 Retina iPad 总是返回 2
Posted
技术标签:
【中文标题】[UIScreen mainScreen].scale 对于非 Retina iPad 总是返回 2【英文标题】:[UIScreen mainScreen].scale always returns 2 for Non-Retina iPads 【发布时间】:2014-10-04 06:48:55 【问题描述】:使用 xcode 5.1.1 和 ios 7.1 构建 iPhone 专用应用程序。
在任何非视网膜设备(ipad mini、模拟器、ipad 2)上运行此应用时,[UIScreen mainScreen].scale 总是返回 2,让我无法检测我是否在视网膜屏幕上。
这与所有其他关于检查视网膜的帖子相反 (Detect Retina Display)
除了检查硬编码设备列表之外,还有其他方法吗?
【问题讨论】:
一个 iPhone 应用程序使用 iPad 上的视网膜资源。比例始终为 2.0。 对于 iPhone-only 应用程序是 iPad 总是 Retina 屏幕。构建通用应用程序,然后检测 Retina iPad。 这太糟糕了,因为我有一个只出现在非视网膜 ipad 上的错误。我想唯一的解决方案是手动检查设备 ID。 @IsaacPaul,如果那不是一个通用应用程序,你不必担心这个错误,iPad 在盒装环境中运行 iPhone 应用程序,应用程序可能看起来不同于应用在真实 iPhone 上的外观(例如状态栏等...)。 错误是不可接受的,哈哈。它们必须被修复。一切都与用户体验有关,iPad 和 iPad mini 用户不会满意。 【参考方案1】:似乎唯一的方法是检查平台标识符。
我在这里实现了:https://gist.github.com/izackp/2ee0ca4b6c731b254e55
但是,它在模拟器上并不准确,因为我没有根据所使用的模拟器获得唯一 id,并且它不适用于未来使用视网膜资源且具有非视网膜显示器的设备。
【讨论】:
以上是关于[UIScreen mainScreen].scale 对于非 Retina iPad 总是返回 2的主要内容,如果未能解决你的问题,请参考以下文章
横向模式的“UIScreen mainScreen] applicationFrame]”
iPad:[UIScreen mainScreen].bounds 返回错误的坐标
为啥 [UIScreen mainScreen].bounds] 没有返回全屏尺寸?
[UIScreen mainScreen].bounds 与 [UIApplcation sharedApplication].keyWindow.bounds?