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
.