2012-10-25 21 views
6

ho nel mio viewController.m scritto il codice di fondo:Xcode 4.5 sfondo iPhone immagine 4, 4s, 5

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"image.png"]]; 

E ho i nomi corretti delle diverse immagini:

image.png for non-retina display (320x480) 

[email protected] for retina display (640x960) 

[email protected] for iPhone 5 (640x1136) 

Ma quando lo eseguo nel simulatore non prende l'[email protected] per lo schermo di iPhone 5, ma prende solo l'immagine @ 2x per lo schermo di 4s e lo ridimensiona per adattarlo allo schermo ... Non so se c'è qualsiasi codifica per utilizzare l'immagine-568h @ 2x per lo schermo di iPhone 5?

Im usando Xcode 4.5

+0

non abusare tag. –

+0

quale versione di Xcoe stai usando? –

+0

Domanda originale: http://stackoverflow.com/questions/13055007/xcode-4-5-different-iphone-backgroud-on-iphone-4s-and-5 Invece di ricreare le domande, considera di fornire più informazioni nell'originale uno, guadagnando una piccola reputazione e iniziando una taglia. –

risposta

13

iPhone 5 è retina, proprio come iPhone 4 e 4S, e l'immagine @ 2x verrà utilizzata automaticamente per tutti questi dispositivi. E 'solo l'avvio-immagine che si chiama "-568h @ 2x" per iPhone 5. È necessario scrivere del codice per utilizzare un'immagine diversa, qualcosa di simile a questo dovrebbe funzionare:

NSString *filename = @"image.png"; 
CGRect screenRect = [[UIScreen mainScreen] bounds]; 
if (screenRect.size.height == 568.0f) 
    filename = [filename stringByReplacingOccurrencesOfString:@".png" withString:@"-568h.png"]; 

imageView.image = [UIImage imageNamed:filename];
+0

è il "imageView" qui @synthesize? o..? – Peter

+1

Dai un'occhiata a questo esempio di progetto: https://www.dropbox.com/s/gcc081dy0frs20z/RetinaImageTest.zip. Se lo esegui nei diversi dispositivi del simulatore, vedrai tre diverse (estremamente brutte) immagini :) Ovviamente dovrebbero essere diverse risoluzioni, ma è una prova di concetto. – TheQ

+0

Grazie mille! Hai effettivamente risolto il mio problema! :) – Peter

2

Credo che sia errato supporre che è possibile applicare il trucco per [email protected]tutti i file di immagine. Penso che lo solo funzioni per [email protected]. Questo è il file che iOS cerca all'avvio dell'app su un dispositivo di visualizzazione da 4 ", così come il" flag "per abilitare il supporto display da 4" nell'SDK. Ad esempio, una volta incluso questo file specifico, le visualizzazioni della tabella riempiranno lo schermo.

Non ho letto nulla per suggerire che è possibile fornire semplicemente qualsiasi immagine con il componente del nome file [email protected] e utilizzarlo automaticamente. Dovrai farlo tu stesso in base alle dimensioni dello schermo, ad es. [UIScreen mainScreen].bounds.size.height.

3

se si sta tentando di utilizzare [UIImage imageNamed:@"image.png"] e si aspetta che [email protected] venga prelevato automaticamente dal pacchetto per iPhone 5, non funzionerà. Il prelievo automatico funziona solo per iPhone 4 e 4S.

solo l'immagine di default denominato come [email protected]

sarà scelto automaticamente in iPhone 5.

per le immagini normali, se si dispone di un'immagine separata per iPhone 5, provare a utilizzare questo codice

CGRect screenBounds = [[UIScreen mainScreen] bounds]; 
if (screenBounds.size.height == 568) { 
    // code for 4-inch screen 
} else { 
    // code for 3.5-inch screen 
} 
Problemi correlati