如何以编程方式精确地找到PPI

Dur*_*n.H 11 ppi screen-resolution ios uiscreen swift

我试图找出iOS中的PPI(Pixils Per Inch).

我找不到任何直接的方法来查询这个,就像我们对显示大小一样

UIScreen.mainScreen().bounds
Run Code Online (Sandbox Code Playgroud)

有一种方法可以通过将尺度与iPhone(163)或iPad(132)的标准通用PPI相乘来实现,但这并不准确.

如果公式是正确的那么PPIiPhone 6 plus是489,但在现实的PPI为401这里是参考

现在似乎硬编码是要走的路.

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

Jen*_*zer 6

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

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

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

import UIScreenExtension
Run Code Online (Sandbox Code Playgroud)

然后利用它:

if let pointsPerCentimeter = UIScreen.pointsPerCentimeter {
   // code
}
Run Code Online (Sandbox Code Playgroud)

  • 值得一提的是,UIScreenExtension 误报了 iPad 2 和 iPad Mini 1 代的 PPI。这些应该分别是 132 和 163,因为这两个设备不是 @2x 视网膜。 (5认同)
  • @step_jac 我首先误解了你的评论 - 最好在早上阅读之前喝杯咖啡 :D 好的,我现在可以看到问题 - 会尽快解决 - 感谢您指出 (2认同)

Vic*_*nin 3

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

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

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