13

我正在尝试在 iOS 中找出 PPI(每英寸像素数)。

我找不到任何直接的方法来查询这个,就像我们对显示尺寸所做的那样

UIScreen.mainScreen().bounds

有一种方法可以将比例与 iPhone(163) 或 iPad(132) 的标准通用 PPI 相乘,但这并不准确。

如果公式正确,那么iPhone 6 plus 的 PPI 是 489实际上PPI是 401这是参考

现在看来,硬编码是要走的路。

但我想使用公式以编程方式进行。

4

3 回答 3

8

我刚刚将我的一个旧 ObjC 库移植并更新到了 Swift。您可以使用它或获取您需要的部分代码。在这里获取:https ://github.com/marchv/UIScreenExtension 。

该库用于UIScreen.main.nativeScale将每英寸像素 (PPI) 转换为每英寸点数。

使用 Cocoapods 安装库,然后导入它:

import UIScreenExtension

然后利用它:

if let pointsPerCentimeter = UIScreen.pointsPerCentimeter {
   // code
}
于 2017-10-03T06:29:20.250 回答
3

我相信没有公共 API 可以获取 PPI 或屏幕的物理尺寸。

唯一的方法是使用物理尺寸和/或 PPI 对设备列表进行硬编码(并且您可以从 UIDevice 类中获取设备类型)。

顺便提一句。这是一个几乎问同样问题(不同方式)的问题: 标尺应用程序如何在所有设备上保持准确?

于 2016-04-19T14:41:13.863 回答
0

iPhone Plus 有 scale 3,但 nativeScale 是 2.6。

UIKit 对这些内容进行采样以适应实际的屏幕尺寸。Metal 或 OpenGL ES 内容应以精确的尺寸呈现。

int screenPPI() {
    return [[UIScreen mainScreen] nativeScale] * ((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? 132 : 163);
}
于 2018-07-12T23:43:14.290 回答