ios - 在 iPhone App 中如何检测设备的屏幕分辨率

在 iPhone 应用程序中, 在设备上运行应用程序时如何检测正在运行应用程序的设备的屏幕分辨率?

最佳答案

CGRect screenBounds = [[UIScreen mainScreen] bounds];

这将为您提供整个屏幕的分辨率(以点为单位),因此对于 iPhone,它通常为 320x480。即使 iPhone4 的屏幕尺寸更大,iOS 仍然返回 320x480 而不是 640x960。这主要是因为较旧的应用程序出现故障。

CGFloat screenScale = [[UIScreen mainScreen] scale];

这将为您提供屏幕的比例。对于所有没有 Retina 显示屏的设备,这将返回 1.0f,而 Retina Display 设备将返回 2.0f,而 iPhone 6 Plus (Retina HD) 将返回 3.0f。

现在,如果您想获取 iOS 设备屏幕的像素宽度和高度,您只需要做一件简单的事情。

CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale);

乘以屏幕的比例可以得到实际的像素分辨率。

关于iOS中点和像素之间差异的好读可以读here .

编辑:(Swift 版本)

let screenBounds = UIScreen.main.bounds
let screenScale = UIScreen.main.scale
let screenSize = CGSize(width: screenBounds.size.width * screenScale, height: screenBounds.size.height * screenScale)

https://stackoverflow.com/questions/4779221/

相关文章:

ios - SDK iOS 8.0 中的产品类型单元测试包需要代码签名

ios - 如何比较 UIColors?

objective-c - 错误 : writable atomic property cannot

objective-c - 检测 NSString 是否包含...?

objective-c - NSInteger 的 NSLog/printf 说明符?

ios - UITableView 设置为静态单元格。是否可以以编程方式隐藏某些单元格?

objective-c - RootViewController 切换过渡动画

ios - Objective-C中的方法重载?

iphone - 如何自动调整 UIScrollView 的大小以适合其内容

objective-c - 为什么在 iOS 中使用前导下划线重命名合成属性?