2011-09-23 10 views
12

Tôi có câu hỏi: Tôi muốn tránh [UIImage imageNamed:]. Vì vậy, tôi đã làm:UIImage initWithContentsOfFile không hoạt động

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

Nhưng bây giờ hình ảnh không được hiển thị nữa.

Có ai biết cách làm việc đó không?

+1

Ok, tôi đã nhận nó làm việc với UIImage * prodImg = [[UIImage alloc] initWithContentsOfFile: [[ NSBundle mainBundle] pathForResource: @ "hình ảnh của tôi" ofType: @ "png"]]; – Tanner

+0

gợi ý: chỉ cần sử dụng '[UIImage imageNamed: @" myimage.png "]' vì nó thêm bộ đệm ẩn và mở rộng thiết bị ("@ 2x", "~ ipad") logic –

+2

Với [UIImage imageNamed: @ "myimage.png"] Tôi nhận được cảnh báo về bộ nhớ, xem tại đây http://www.alexcurylo.com/blog/2009/01/13/imagenamed-is-evil/ – Tanner

Trả lời

25

Đoạn mã trên không hoạt động vì cách chính xác để làm điều đó là-

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

;)