Mac OS 得到当前屏幕的DPI

       不同的移动设备的屏幕大小不同,且标准也不同,有的以毫米,有的以英寸,有的以像素! 一张图片放到不同大小的设备上显示,图片的像素大小是一定的,所以为了展示效果,就要根据目标设备的DPI来转换输出图片的大小!!   因此就需要获取目标设别的DPI了 !! Google了很久了,终于发现一方法!如下:

    通过CGDisplayScreenSize获得当前设备的Size,再计算出DPI

例子:

NSScreen *screen = [NSScreen mainScreen];
NSDictionary *description = [screen deviceDescription];
NSSize displayPixelSize = [[description objectForKey:NSDeviceSize] sizeValue];
CGSize displayPhysicalSize = CGDisplayScreenSize(
            [[description objectForKey:@"NSScreenNumber"] unsignedIntValue]);

NSLog(@"DPI is %0.2f", 
         (displayPixelSize.width / displayPhysicalSize.width) * 25.4f); 
         // there being 25.4 mm in an inch

NSScreenNumber 虽然有一点冒险,但它确实可获得当前屏幕的ID

That NSScreenNumber thing looks dodgy but is the explicit documented means of obtaining a CGDirectDisplayID from anNSScreen.

又发现更直接的方法:

NSScreen *screen = [NSScreen mainScreen];
NSDictionary *description = [screen deviceDescription];

NSSize displayDpiSize = [[ description objectForKey:NSDeviceResolution ] sizeValue ];

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值