首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在运行时获取iPhone / iPad / iPod触摸的ppi

在运行时获取iPhone / iPad / iPod触摸的ppi
EN

Stack Overflow用户
提问于 2010-10-05 09:31:35
回答 2查看 18.2K关注 0票数 21

有人知道有没有办法在运行时获得设备的屏幕密度(ppi)?如果不需要硬编码不同的密度就好了,以防苹果在将来切换它。

EN

回答 2

Stack Overflow用户

发布于 2011-10-28 05:31:07

我已经找了很长时间了,似乎没有一种简单的方法来获得dpi。然而,UIScreen的文档说一个未缩放的点大约等于1/160英寸。

所以,基本上,如果你想要dpi,你可以将比例乘以160。

代码语言:javascript
复制
  float scale = 1;
  if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
    scale = [[UIScreen mainScreen] scale];
  }
  float dpi = 160 * scale;

(带有respondsToSelector的if语句是为了让代码在没有该属性的旧版本iOS上工作)

根据维基百科的数据,iPhone是163dpi,带视网膜显示屏的iPhone是326,iPad是132。因此,使用这个公式,iPad的dpi并不是特别准确,尽管iPhone的dpi相当不错。如果您希望已知设备具有更高的准确性,您可以对已知设备的dpi进行硬编码,并使用1/160的比率作为将来任何情况的后备。

代码语言:javascript
复制
  float scale = 1;
  if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
    scale = [[UIScreen mainScreen] scale];
  }
  float dpi;
  if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    dpi = 132 * scale;
  } else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
    dpi = 163 * scale;
  } else {
    dpi = 160 * scale;
  }

这并不是很理想,我自己也不介意看到一个更好的解决方案,但这是我能找到的最好的解决方案。

票数 23
EN

Stack Overflow用户

发布于 2016-09-03 08:18:17

试试https://github.com/lmirosevic/GBDeviceInfo

代码语言:javascript
复制
int ppi = [GBDeviceInfo deviceInfo].displayInfo.pixelsPerInch;                // #> 326]

在iOS和OSX上工作

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3860305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档