2012-10-11 50 views
6

Para la pantalla de carga y la pantalla de presentación de mi aplicación, utilicé dos métodos diferentes para mostrar las imágenes de mi iPhone 3, iPhone 4 y iPhone 5 correctamente.iOS Colorwithpattern: uso de una imagen personalizada de iPhone5

Para la pantalla de carga, basta con agregar -568h @ 2x a su imagen para que sea compatible con iPhone5.

Para la pantalla secundaria, utilicé una serie de casos (si la altura ==) para verificar la altura de los límites de UIScreen y obtuve la imagen apropiada para la vista de la imagen. Para mí fue evidente que el -568h no es universalmente reconocido como una imagen de iPhone 5. Solo se aplica a la pantalla de carga.

Ahora, en mi AppDelegate, estoy configurando una imagen de fondo. Todas mis subvistas tienen un fondo transparente, por lo que se supone que se muestran a través de la imagen de fondo. Sin embargo, estoy teniendo más problemas para configurar la imagen de fondo aquí.

Simplemente pasando en "Background.png" Agregar el -568h @ 2x al final del nombre de archivo no funciona. Hará la pantalla de retina no retina y 3.5 '', pero no elegirá para la pantalla de 4 ''.

es decir:

self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]]; 

Si utilizo el fragmento de código anterior, la imagen iPhone4 se utiliza en lugar de la imagen iPhone5 y esto no es lo que quiero.

Pasé a tratar de hacer lo mismo que hice con la pantalla emergente. Tenía un montón de si los casos:

CGFloat height = [UIScreen mainScreen].currentMode.size.height; 

if (height == 1136) 
{ 
    //Choose image here 
} 
else if (height == 960) 
{ 
    //Choose image here 
} 
else if (height == 480) 
{ 
    //Choose image here 
} 
self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:chosenImage]]; 

Pero la función colorWithPatternImage piensa que el chosenImage va de 1 punto = 1 píxel. Así que termino con una imagen no retina que intenta encajar en la pantalla del iPhone 5. ¿A qué se parece exactamente? Parece que solo se muestra el cuadrante superior izquierdo de la imagen que quería en toda la pantalla del iPhone 5. Parece que no se aplicó ninguna escala de retina.

Necesito el iPhone para reconocer que tengo una imagen de iPhone 5 compatible con la retina que se utilizará como fondo. ¿Cómo hago esto?

Respuesta

7

me encontré con este código here, tal vez le ayuda a:

UIImage *tmpImage = [UIImage imageNamed:@"[email protected]"]; 
UIImage *backgroundImage = [UIImage imageWithCGImage:[tmpImage CGImage] 
               scale:2.0 
             orientation:UIImageOrientationUp]; 
self.window.backgroundColor = [UIColor colorWithPatternImage:backgroundImage]; 
Cuestiones relacionadas