我想知道mac osx下的物理屏幕大小。但是NSDeviceResolution总是报告错误的值(72),因此分辨率/dpi的计算结果是错误的。
在“关于这个Mac”里面,有一个Mac模型字符串,我的是“15英寸,2011年初”。所以我想知道是否有一种方法(可能在obj-c中)来读取这个字符串,然后我可以使用它作为物理屏幕大小。
任何帮助都是值得赞赏的。

最佳答案

您可以使用CGDisplayScreenSize以毫米为单位获取屏幕的物理大小。从中你可以计算出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"事物看起来很狡猾,但却是从CGDirectDisplayID获得NSScreenexplicit documented means

关于objective-c - 如何读取OSX的物理屏幕尺寸?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12589198/

10-13 05:07