¿Hay alguna manera de detectar que su aplicación de iPhone nos está ejecutando 2x/1x en un iPad?detectar iPad 2x botón para la aplicación de iPhone
Necesito poder detectar la diferencia en puntos por pulgada para mi aplicación.
¿Hay alguna manera de detectar que su aplicación de iPhone nos está ejecutando 2x/1x en un iPad?detectar iPad 2x botón para la aplicación de iPhone
Necesito poder detectar la diferencia en puntos por pulgada para mi aplicación.
Usted puede detectar el cambio mediante el registro para la notificación _UIClassicApplicationWillChangeZoomNotificationName
y luego manejar el cambio de escala utilizando más o menos el método descrito por @magma en su respuesta. _UIClassicApplicationWillChangeZoomNotificationName
le dirá cuándo se ha usado el botón "2x"/"1x" para cambiar la escala.
comprobar la propiedad scale
:
[[UIScreen mainScreen] scale]
He aquí una función práctica:
+(BOOL) screenIs2xResolution {
return 2.0 == [MyDeviceClass mainScreenScale];
}
+(CGFloat) mainScreenScale {
CGFloat scale = 1.0;
UIScreen* screen = [UIScreen mainScreen];
if ([UIScreen instancesRespondToSelector:@selector(scale)]) {
scale = [screen scale];
}
return scale;
}
Créditos: http://www.markj.net/iphone-4-2x-graphics-scale-ipad/
Ver también: http://struct.ca/2010/high-res-graphics-in-cocos2d/
esto no cambia. – madmik3
@ madmik3 lo hace. Varios desarrolladores admiten gráficos de alta resolución en aplicaciones de iPhone que se ejecutan a 2x en un iPad. – magma
He agregado este código a mi aplicación y probado. Siempre informa una escala de 1.0. Entonces no está funcionando en mi caso. – madmik3
Puesto que no puede registrarse para _UIClassicApplicationWillChangeZoomNotificationName
, que parece ser una constante interna, lo que hice es:
Registro para cualquier notificación:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeZoom:) name:nil object:nil];
Y a continuación, comprobar los valores de acuerdo:
- (void)changeZoom:(NSNotification*)notification
{
if ([[notification name] isEqualToString:@"_UIClassicApplicationWillChangeZoomNotificationName"])
{
NSLog(@"Zoom changed to %@", [[[notification userInfo] objectForKey:@"_UIClassicIsZoomedUserInfoKeyName"] boolValue] == 0 ? @"1x" : @"2x");
}
}
posible duplicado de [detección de la aplicación iPhone que se ejecuta en iPad en modo compatibilidad] (http://stackoverflow.com/questions/3242620/detecting-iphone-app-running-on-ipad-in-comp atibility-mode) –
@Josh, está relacionado, pero no es un duplicado. Reconocer que su aplicación de iPhone se está ejecutando en un iPad, y detectar si se está ejecutando en 1x o 2x, son dos cosas diferentes. Buen enlace; seguramente querrá saber si una escala 2x está asociada a una pantalla Retina iPhone4 o un modo iPad 2x, antes de actuar en consecuencia. – magma