2012-09-18 27 views
12

Algunas de mis aplicaciones usan imágenes personalizadas como fondo. ¿Cuál es la forma correcta de verificar el tamaño de la pantalla para colocar la imagen adecuada?¿Cómo administro imágenes de fondo para el iPhone 5?

Debería ser algo como esto en viewDidLoad:

if ([UIScreen mainScreen] == 2.0) 
{ 
    UIImage * backgroundImage = [UIImage imageNamed:@"[email protected]"]; 
    backgroundImageView = [[UIImageView alloc] initWithImage:backgroundImage]]; 
} 
else 
{ 
    UIImage * backgroundImage = [UIImage imageNamed:@"bgimage.png"]; 
    backgroundImageView = [[UIImageView alloc] iniWithImage:backgroundImage]]; 
} 

Algún consejo/asesoramiento es muy apreciada!

Gracias!

Respuesta

16

El siguiente código verifica el tamaño/límites de la pantalla. Si la pantalla tiene 586 puntos (recuerde que la pantalla se mide en puntos debido a Retina), entonces sabemos que es la nueva pantalla Retina de 4 pulgadas.

if ([[UIScreen mainScreen] bounds].size.height == 568) 
{ 
    UIImage * backgroundImage = [UIImage imageNamed:@"[email protected]"]; 
    backgroundImageView = [[UIImageView alloc] initWithImage:backgroundImage]; 
} 
else 
{ 
    UIImage * backgroundImage = [UIImage imageNamed:@"bgimage.png"]; 
    backgroundImageView = [[UIImageView alloc] initWithImage:backgroundImage]; 
} 

Ver también iOS 6 apps - how to deal with iPhone 5 screen size?

+2

Puede eliminar el texto "@ 2x" y .png de los nombres de los archivos de imagen y las cosas deberían funcionar. por lo general, no es una buena idea poner "@ 2x" allí ya que eso es manejado bajo el capó por imageNamed: de todos modos – Kevlar

+0

¿dónde iría esto? "- viewdidLoad" – Gabriel

+0

Sí. El código es básicamente lo que Lucas puso en la pregunta original, donde está pidiendo algo para poner en 'viewDidLoad:' – Bryan

1

respuesta de Bryan anteriormente trabajó para mí, excepto que tuve que usar

[self.bgImageView setImage:backgroundImage]; 

en lugar de

backgroundImageView = [[UIImageView alloc] initWithImage:backgroundImage]; 

La imagen correcta sólo se muestra si yo usa el primero

+0

'backgroundImageView' era solo un nombre para ilustrar cómo se escribe el enunciado if. Fue puesto en la pregunta por Luke. No es algo que se espera que encuentres en tu propio programa. Por la misma razón, 'bgImageView' es solo un nombre en su programa, no funcionará para nadie más a menos que escojan el mismo nombre. – Bryan

Cuestiones relacionadas