¿Cuál es el código para detectar si la aplicación ios se ejecuta en iPhone, iPhone, pantalla Retina o iPad?

¿Cuál es el código para detectar si la aplicación ios se ejecuta en iPhone, iPhone, pantalla Retina o iPad?

Fondo:

  • para mi aplicación de iPhone, he definido en la página de destino / resumen XCode las imágenes específicas para: image de lanzamiento de iPhone, image de lanzamiento de retina de iPhone, retrato de iPad y paisaje de iPad.

  • en la vista principal hay una subview UIImageView que uso para la image de background, actualmente estoy especificando esto en XCode (no mediante progtwigción) seleccionando la image que uso para la image de inicio del iPhone.

Entonces me pregunto cómo decir en cuál me estoy ejecutando para que en la vistaDidLoad pueda cargar la image de background de resolución apropiada. Luego debería haber una transición sin interrupciones entre la image de background para el inicio de la aplicación y el background de la pantalla principal de la aplicación una vez que se inició.

Puede usar [[UIDevice currentDevice] userInterfaceIdiom] para determinar si se está ejecutando en un iPhone / iPod touch o un iPad.

A menudo no hay necesidad de determinar directamente si está en una pantalla retina porque UIImage maneja automáticamente cuando usa imageNamed y agrega "@ 2x" a sus nombres de file de image de alta resolución (consulte Compatibilidad con pantallas de alta resolución en la Guía de dibujo e printing para iOS).

Si realmente necesita saber qué resolución tiene la pantalla, use el método de scale UIScreen .

Aquí hay dos methods de class útiles que utilizo, que responden directamente a su pregunta, que es posible que desee utilizar más adelante:

 +(BOOL)isPad { #ifdef UI_USER_INTERFACE_IDIOM return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad; #endif return NO; } +(BOOL)hasRetinaDisplay { // checks for iPhone 4. will return a false positive on iPads, so use the above function in conjunction with this to determine if it's a 3GS or below, or an iPhone 4. if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2) return YES; else return NO; } 

Para la solución Swift:

  if (UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad) { // Ipad } else { // Iphone } 

ver @interface UIDevice

así como la documentation en -[UIImage scale] (aunque hay mejores resources, que probablemente se publicarán).

Aquí hay un código para copyr y pegar …

 bool runningOniPhone; if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){ runningOniPhone = TRUE; } else { runningOniPhone = FALSE; }