不同的移动设备的屏幕大小不同,且标准也不同,有的以毫米,有的以英寸,有的以像素! 一张图片放到不同大小的设备上显示,图片的像素大小是一定的,所以为了展示效果,就要根据目标设备的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 ];