2013-12-09 3 views
5

Il file predefinito di Xcode Images.xcassets ha uno slot per LaunchImage, dove per un'app per iPhone di ritratto sono disponibili 5 slot.L'immagine di avvio dal file xcassets ha una dimensione errata

In base allo documentation, per ottenere un'immagine correttamente dimensionata dal file xcassets, utilizzare solo [UIImage imageNamed:].

Tuttavia, eseguendo il codice su iPhone Retine (4 pollici) simulatore:

UIImage *splashImage = [UIImage imageNamed:@"LaunchImage"]; 
NSLog(@"%@", NSStringFromCGSize(splashImage.size)); 

produce il seguente output:

{320, 480} 

che è ovviamente la dimensione sbagliata.

Ho verificato che i mapping nel file xcassets sono corretti e hanno confermato tutte le dimensioni. Sembra anche che non possa richiedere un'immagine specifica da un determinato set nel file xcassets, il che significa che non posso fare: [UIImage imageNamed:@"LaunchImageR4"].

E poiché i file vengono aggiunti a un file xcassets, non ho nemmeno accesso ai file di immagine grezzi, quindi una soluzione personalizzata sembra fuori discussione.

Qualcuno ha idea di come risolverei questo problema?

risposta

-1

Credo che l'immagine di avvio corretta sia caricata automaticamente all'avvio. Non è pensato per essere tirato da xcassets durante il runtime. Dato che è in fase di esecuzione, dovrai eseguire il tuo controllo per quale dispositivo viene utilizzato, poiché il catalogo immagini è impostato solo per tirare la retina rispetto alla non retina usando il suffisso @ 2x (non le dimensioni del dispositivo).

È possibile utilizzare this post per determinare quale dispositivo viene utilizzato e caricare l'immagine corretta in base al nome.

+0

Sì, ma non ho accesso ai file di immagine di avvio non elaborati. I miei file immagine di avvio sono chiamati 'AppSplash.png', ma se dovessi accedervi con UIImage, verrebbe vuoto. Quindi la tua soluzione non funzionerebbe. – Snowman

0

Le immagini di avvio sono un tipo speciale di set di immagini. Non è possibile utilizzare [UIImage imageNamed:@"LaunchImage"] per ottenere l'immagine di avvio corretta adatta al dispositivo (ad esempio iPhone 3 ", 4" o iPad + Retina).

+0

Non capisco cosa sta dicendo la tua risposta. Mi stai solo dicendo che non posso? – Snowman

+0

Non usando 'imageNamed:' Se vuoi sapere se sei su un display da 4 ", controlla se' [UIScreen mainScreen] .bounds.size.height == 568.0f' e poi dovrai selezionare manualmente l'immagine giusta –