versiones sistemas sistema sierra operativos operativo mojave mac high descargar apple objective-c macos screen dpi

objective-c - sistemas - sistema operativo mac



Cómo leer el tamaño de la pantalla física de OSX? (1)

Me gustaría saber el tamaño de la pantalla física en Mac OSX. Pero NSDeviceResolution siempre informa el valor incorrecto (72), por lo que el resultado del cálculo de la resolución / ppp es incorrecto.

Dentro de "Acerca de esta Mac", hay una cadena de modelo Mac allí, la mía es "15 pulgadas, principios de 2011". Así que me pregunto si debería haber una forma (en obj-c probablemente) de leer esa cadena y luego puedo usarla como el tamaño de la pantalla física.

Cualquier ayuda es apreciada.


Puede usar CGDisplayScreenSize para obtener el tamaño físico de una pantalla en milímetros. Desde allí, puede computarizar el DPI dado que ya conoce la resolución.

Por ejemplo,

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

Ese @"NSScreenNumber" parece dudoso, pero es el medio documentado explícito de obtener un CGDirectDisplayID desde un NSScreen .