2011-08-27 8 views
10

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

Antecedentes:

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

  • En la vista principal hay una subvista UIImageView que uso para la imagen de fondo. Actualmente estoy especificando esto en XCode (no programáticamente) seleccionando la imagen que uso para la imagen de inicio del iPhone.

Así que estoy preguntando cómo saber cuál estoy corriendo dentro para que en el viewDidLoad puedo cargar la imagen de resolución de fondo apropiado. Luego, una vez que se inicie, debe haber una transición perfecta entre la imagen de fondo para el inicio de la aplicación y el fondo de la pantalla principal de la aplicación.

Respuesta

18

Puede utilizar [[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ás en una pantalla de la retina debido a UIImage asas que de forma automática cuando se utiliza imageNamed y añadir "@ 2x" a su alta resolución de nombres de archivo de imagen (ver Supporting High-Resolution Screens en la Guía de Dibujo y prensa para iOS).

Si realmente necesita saber qué resolución tiene la pantalla, utilice el método UIScreenscale.

+8

nota '[[UIDevice currentDevice] userInterfaceIdiom]' se pueden comparar con 'UIUserInterfaceIdiomPho ne' o 'UIUserInterfaceIdiomPad' –

0

ver @interface UIDevice

, así como la documentación a -[UIImage scale] (aunque hay mejores recursos, que es probable que se publican).

8

Aquí hay 2 métodos útiles de clase que yo uso, que responde directamente a su pregunta - lo que es posible que desee utilizar más abajo en la línea de:

+(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; 
} 
+1

muy bonito Luke ... – Greg

0

Aquí hay un código para copiar y pegar ...

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

Para la solución Swift:

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