2011-09-23 15 views
12

Ho una domanda: Voglio evitare [UIImage imageNamed:]. Così ho fatto:UIImage initWithContentsOfFile non funziona

UIImage *prodImg = [[UIImage alloc] initWithContentsOfFile:@"myimage.png"]; 
controller.productImg.image = prodImg; 
[prodImg release]; 

Ma ora l'immagine non viene visualizzata più.

Qualcuno sa come farlo funzionare?

+1

Ok, ho ottenuto che funziona con UIImage * prodImg = [[UIImage alloc] initWithContentsOfFile: [[ NSBundle mainBundle] pathForResource: @ "my image" ofType: @ "png"]]; Suggerimento – Tanner

+0

: basta usare '[UIImage imageNamed: @" myimage.png "]' perché aggiunge la cache e l'estensione del dispositivo ("@ 2x", "~ ipad") logica –

+2

Con [UIImage imageNamed: @ "myimage.png"] Ricevo avvisi di memoria, vedi qui http://www.alexcurylo.com/blog/2009/01/13/imagenamed-is-evil/ – Tanner

risposta

25

Il codice di cui sopra non funziona perché il modo corretto per farlo è-

NSString *thePath = [[NSBundle mainBundle] pathForResource:@"default" ofType:@"jpeg"]; 
UIImage *prodImg = [UIImage imageWithContentsOfFile:thePath]; 
controller.productImg.image = prodImg; 
[prodImg release]; 

;)