2012-10-11 18 views
6

Per la schermata di caricamento e la schermata iniziale della mia app, ho utilizzato due metodi diversi per visualizzare correttamente le immagini di iPhone 3, iPhone 4 e iPhone 5.iOS Colorwithpattern - utilizzando un'immagine personalizzata iPhone5

Per la schermata di caricamento, è sufficiente aggiungere -568h @ 2x all'immagine per supportare iPhone5.

Per la schermata iniziale, ho utilizzato una serie di casi (se altezza ==) per controllare l'altezza dei limiti di UIScreen e l'immagine appropriata trovata nella vista dell'immagine. È stato evidente a me qui che il -568h non è universalmente riconosciuto come immagine di iPhone 5. È applicabile solo alla schermata di caricamento.

Ora, nel mio AppDelegate, sto impostando un'immagine di sfondo. Tutte le mie sottoview hanno uno sfondo trasparente, quindi dovrebbero mostrare l'immagine di sfondo. Tuttavia, sto riscontrando il maggior numero di problemi nell'impostazione dell'immagine di sfondo qui.

Passare semplicemente in "Background.png" L'aggiunta di -568h @ 2x alla fine del nome file non funziona. Farà la retina e il display retina 3,5 ', ma non prenderà il display da 4 pollici.

cioè:

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

Se uso frammento di sopra del codice, l'immagine iPhone4 è usato al posto del quadro iPhone5 e questo non è quello che voglio.

Mi sono trasferito a provare a fare la stessa cosa che ho fatto con lo splashscreen. Ho avuto un po 'di se i casi:

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]]; 

Ma la funzione colorWithPatternImage pensa che il chosenImage va di 1 punto = 1 pixel. Così finisco con un'immagine non retina che tenta di adattarsi allo schermo di iPhone 5. Che aspetto sembra? Sembra che solo il quadrante in alto a sinistra dell'immagine che desidero venga visualizzato su tutto lo schermo dell'iPhone 5. Sembra che non sia stato applicato il ridimensionamento della retina.

Ho bisogno che l'iPhone riconosca di avere una immagine iPhone 5 retina da utilizzare come sfondo. Come faccio a fare questo?

risposta

7

Ho trovato questo codice here, forse ti aiuta:

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