2011-09-23 14 views
12

Mam pytanie: Chcę uniknąć [UIImage imageNamed:]. tak zrobiłem:UIImage initWithContentsOfFile nie działa

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

Teraz jednak obraz nie jest wyświetlany już.

Czy ktoś wie, jak to uruchomić?

+1

Ok, mam to praca z UIImage * prodImg = [[UIImage alloc] initWithContentsOfFile: [[ NSBundle mainBundle] pathForResource: @ "mój obraz" ofType: @ "png"]]; – Tanner

+0

sugestia: po prostu użyj '[UIImage imageNamed: @" myimage.png "]', ponieważ dodaje buforowanie i rozszerzenie urządzenia ("@ 2x", "~ ipad") logika –

+2

z [UIImage imageNamed: @ "myimage.png"] Otrzymuję ostrzeżenia o pamięci, zobacz tutaj http://www.alexcurylo.com/blog/2009/01/13/imagenamed-is-evil/ – Tanner

Odpowiedz

25

Powyższy kod nie działa, ponieważ poprawny sposób to zrobić jest-

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

;)