2013-10-25 17 views
19

Mi piacerebbe visualizzare l'icona dell'app all'interno della mia app. L'icona si trova nel catalogo delle risorse predefinite (Images.xcassets).Carica icona app da xcassets

Come si carica? Ho provato quanto segue e tutti tornare nil:

image = [UIImage imageNamed:@"AppIcon"]; 
image = [UIImage imageNamed:@"icon"]; 
image = [UIImage imageNamed:@"icon-76"]; 
image = [UIImage imageNamed:@"icon-60"]; 

Altre immagini nel lavoro Catalogo beni come previsto.

risposta

22

Ispezionando il bundle Ho trovato che le immagini delle icone sono stati rinominati come:

AppIcon76x76~ipad.png 
[email protected]~ipad.png 
[email protected] 

E così via.

Quindi, utilizzando [UIImage imageNamed:@"AppIcon76x76"] o lavori simili.

È documentato da qualche parte?

+1

Sembra esserci documentazione qui: https://developer.apple.com/library/ios/qa/qa1686/_index.html –

+1

Questo è pericoloso da fare. Apple potrebbe cambiare la convenzione di denominazione e l'interruzione della tua app in futuro. Il mio suggerimento è solo quello di copiare un'altra icona nel tuo image.xcasset separatamente. – GeneCode

13

mi consiglia recuperare l'URL dell'icona controllando la Info.plist poiché non c'è alcuna garanzia di come i file delle icone sono denominati:

NSDictionary *infoPlist = [[NSBundle mainBundle] infoDictionary]; 
NSString *icon = [[infoPlist valueForKeyPath:@"CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles"] lastObject]; 
imageView.image = [UIImage imageNamed:icon]; 

In questo caso stiamo recupero l'ultimo URL immagine della matrice CFBundleIconFiles. Ha la risoluzione più grande. Cambia questo se hai bisogno di una risoluzione più piccola.

+0

Suggerimento interessante. Sarebbe bello confermare se il nome di 'AppIcon' è pubblico o no. – hpique

+1

Nel mio caso le icone hanno un nome diverso. Quindi non mi baserei semplicemente sul nome. –

+1

perché non semplicemente questo dopo aver impostato "icona"? imageView.image = [UIImage imageNamed: icon]; –