teclado resetear con como cambiar botones bloqueado apple ios objective-c iphone iphone-6-plus uiscreen

ios - resetear - ¿Cómo puedo detectar si un usuario tiene un iPhone 6 Plus en modo estándar o con zoom?



itunes (5)

¿Cómo puedo detectar si un usuario tiene un iPhone 6 Plus en modo estándar o con zoom? es posible?

Intenté [UIScreen mainScreen].scale e informa 3.0 en ambos casos.


El siguiente código se puede usar para obtener bounds , coordinateSpace nativeScale , scale nativeScale y scale , es decir, en un iPhone 6 Plus, la nativeScale es nativeScale y cuando el dispositivo se ejecuta en modo zoom es 2.88 (tenga en cuenta que es diferente en el simulador):

UIScreen *mainScreen = [UIScreen mainScreen]; NSLog(@"Screen bounds: %@, Screen resolution: %@, scale: %f, nativeScale: %f", NSStringFromCGRect(mainScreen.bounds), mainScreen.coordinateSpace, mainScreen.scale, mainScreen.nativeScale);

Código para detectar iPhone 6 Plus:

-(BOOL)iPhone6PlusDevice{ // Scale is 3 currently only for iPhone 6 Plus if ([UIScreen mainScreen].scale > 2.9) return YES; return NO; }

o

-(BOOL)iPhone6PlusUnZoomed{ if ([self iPhone6PlusDevice]){ if ([UIScreen mainScreen].bounds.size.height > 720.0) return YES; // Height is 736, but 667 when zoomed. } return NO; }

Nota: Si está buscando iPhone 6 Plus, para ajustar la interfaz de usuario, no confíe en .nativeScale , porque el simulador y un dispositivo real dan resultados diferentes.


Esta opción se utiliza para detectar dispositivos iPhone.

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) #define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) #define IS_IPHONE_5 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 568.0) #define IS_IPHONE_6 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 667.0) #define IS_IPHONE_6PLUS (IS_IPHONE && [[UIScreen mainScreen] nativeScale] == 3.0f) #define IS_IPHONE_6_PLUS (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 736.0) #define IS_RETINA ([[UIScreen mainScreen] scale] == 2.0)


Hay un nuevo miembro

<UIScreenMode: 0x17802f240; size = 1242.000000 x 2208.000000> // STANDARD <UIScreenMode: 0x178226be0; size = 1125.000000 x 2001.000000> // ZOOMED

que debe hacer lo que quieras Solo está disponible en iOS 8, por lo que deberá protegerlo


Macros actualizadas de la answer de Paula Chavarría para iOS 8 (donde [UIScreen mainScreen].bounds.size depende de la orientación):

#define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) #define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) #define IS_IPHONE_5 (IS_IPHONE && (MAX([[UIScreen mainScreen] bounds].size.height, [[UIScreen mainScreen] bounds].size.width) == 568.0) && ((IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale == [UIScreen mainScreen].scale) || !IS_OS_8_OR_LATER)) #define IS_STANDARD_IPHONE_6 (IS_IPHONE && MAX([[UIScreen mainScreen] bounds].size.height, [[UIScreen mainScreen] bounds].size.width) == 667.0 && IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale == [UIScreen mainScreen].scale) #define IS_ZOOMED_IPHONE_6 (IS_IPHONE && MAX([[UIScreen mainScreen] bounds].size.height, [[UIScreen mainScreen] bounds].size.width) == 568.0 && IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale > [UIScreen mainScreen].scale) #define IS_STANDARD_IPHONE_6_PLUS (IS_IPHONE && MAX([[UIScreen mainScreen] bounds].size.height, [[UIScreen mainScreen] bounds].size.width) == 736.0) #define IS_ZOOMED_IPHONE_6_PLUS (IS_IPHONE && MAX([[UIScreen mainScreen] bounds].size.height, [[UIScreen mainScreen] bounds].size.width) == 667.0 && IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale < [UIScreen mainScreen].scale) #define IS_IPHONE_6 (IS_STANDARD_IPHONE_6 || IS_ZOOMED_IPHONE_6) #define IS_IPHONE_6_PLUS (IS_STANDARD_IPHONE_6_PLUS || IS_ZOOMED_IPHONE_6_PLUS)


[UIScreen mainScreen].currentMode informa:

[[UIScreen mainScreen] nativeScale]