2012-06-07 41 views
26

Làm cách nào tôi có thể đặt hình ảnh thành đối tượng UIImage. Ví dụ:Cách đặt hình ảnh thành UIImage

UIImage *img = [[UIImage alloc] init]; 
[img setImage:[UIImage imageNamed:@"anyImageName"]]; 

đối tượng UIImage My được khai báo trong .h tập tin và phân bổ theo phương pháp init, tôi cần phải thiết lập hình ảnh trong viewDidLoad phương pháp. Bất kỳ ý tưởng nào?

+3

UIImage * img = [UIImage imageNamed @ "anyImageName"]; –

+1

bạn có thể ** tuyên bố ** một cái gì đó trong giao diện (những gì bạn gọi .h tập tin), nhưng không tạo ra nó ở đó. – vikingosegundo

Trả lời

44
UIImage *img = [UIImage imageNamed:@"anyImageName"]; 

imageNamed:
Trả về đối tượng hình ảnh đi kèm với tên tập tin cụ thể.

+ (UIImage *)imageNamed:(NSString *)name 

thông số
tên
Tên của tập tin. Nếu đây là lần đầu tiên hình ảnh được tải, phương pháp sẽ tìm kiếm hình ảnh có tên được chỉ định trong gói chính của ứng dụng .
Giá trị trả lại
Đối tượng hình ảnh cho tệp được chỉ định hoặc không nếu phương thức không thể tìm thấy hình ảnh được chỉ định.

Thảo luận
Phương pháp này sẽ tìm trong cache hệ thống cho một đối tượng hình ảnh với tên được chỉ định và lợi nhuận mà phản đối nếu nó tồn tại. Nếu đối tượng hình ảnh phù hợp chưa có trong bộ nhớ cache, phương thức này sẽ tải hình ảnh dữ liệu từ tệp được chỉ định, lưu trữ nó và sau đó trả về đối tượng kết quả .

+0

đối tượng được tạo trong tệp .h và được cấp phát bằng phương thức init, tôi cần đặt hình ảnh trong phương thức viewDidLoad. – Shamsiddin

+1

để tạo thuộc tính và gán nó cho nó – vikingosegundo

+0

không, nhưng nếu bạn muốn biết về các thuộc tính, bạn nên đặt một câu hỏi mới và không cố gắng giải quyết nó trong các nhận xét cho câu trả lời cho câu hỏi về cách tạo UIImage một tệp hình ảnh. – vikingosegundo

1

Có một lỗi trên dòng này:

[img setImage:[UIImage [email protected]"anyImageName"]]; 

Nó nên là:

[img setImage:[UIImage imageNamed:@"anyImageName"]]; 
+3

Điều đó là sai. vì UIImage không có bất kỳ phương thức nào như setImage:. – BHASKAR

+0

trong mã này đúng nhưng một sai lầm cũng giải quyết được Mr.jeremy ..Cảm ơn u sir chia sẻ kiến ​​thức của bạn –

0

có thể là:

UIImage *img = [[UIImage alloc] init]; 

và khi bạn muốn thay đổi thứ e hình ảnh:

img = [UIImage imageNamed:@"nameOfPng.png"]; 

nhưng đối tượng không ở cùng vị trí trong bộ nhớ, nhưng nếu bạn sử dụng con trỏ, con trỏ đó sẽ trỏ đến hình ảnh cuối cùng được tải.

+1

và đây là rò rỉ bộ nhớ cuộc gọi :) – Shamsiddin

+0

Có chắc chắn, nhưng trước khi giao lại hình ảnh mới, bạn đã thực hiện một [img phát hành]. Tôi không đặt nó ở đây, bởi vì nó là cơ sở của Objective-C ... –

+0

cũng ngay cả trong không-ARC '-phát hành' sẽ mang lại một lỗi chọn không tìm thấy. – vikingosegundo

0

Như vikingosgundo đã nói, nhưng hãy nhớ rằng nếu bạn sử dụng [UIImage imageNamed:image] thì hình ảnh được lưu vào bộ nhớ cache và ăn đi bộ nhớ. Vì vậy, trừ khi bạn định sử dụng cùng một hình ảnh ở nhiều nơi, bạn nên tải hình ảnh, với imageWithContentsOfFile:imageWithData:

Điều này sẽ giúp bạn tiết kiệm bộ nhớ đáng kể và tăng tốc ứng dụng của bạn.

9

Tạo một UIImageView và thêm UIImage với nó:

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image Name"]] ; 

Sau đó thêm nó vào xem của bạn:

[self.view addSubView: imageView]; 
0

Đầu tiên tuyên bố UIImageView và cung cấp cho nó khung

UIImageView *imageView = [[UIImageView alloc] initWithFrame: CGRectMake(10.0f, 15.0f, 40.0f,40.0f)]; 
     [imageView setBackgroundColor: [UIColor clearColor]]; 
     [imageView setImage:[UIImage imageNamed:@"comments_profile_image.png"]]; 
     [self.view addSubview: imageView]; 
0

Bạn có thể đặt hình ảnh trong đối tượng UIImage eiter theo cách sau:

  1. UIImage *imageObject = [UIImage imageNamed:@"imageFileName"]; nhưng bằng cách khởi UIImage Object như thế này, hình ảnh luôn được lưu trữ trong bộ nhớ cache thậm chí bạn thực hiện nó nil như imageObject=nil;

của nó tốt hơn để làm theo điều này:

  1. NSString *imageFilePath = [[NSBundle mainBundle] pathForResource:@"imageFilename" ofType:@"imageFile_Extension"];

    UIImage *imageObject = [UIImage imageWithContentsOfFile:imageFilePath]; 
    

VÍ DỤ: NSString *imageFilePath = [[NSBundle mainBundle] pathForResource:@"abc" ofType:@"png"];

UIImage *imageObject = [UIImage imageWithContentsOfFile:imageFilePath]; 
0

chỉ cần thay đổi dòng này

[img setImage:[UIImage imageNamed:@"anyImageName"]]; 

với sau dòng

img = [UIImage imageNamed:@"anyImageName"]; 
0

Bạn không thể alloc UIImage, điều này là không thể. mã đúng với UIImageView phân bổ: image

UIImageView *_image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"something.png"]] ; 

Draw:

CGContextDrawImage(context, rect, _image.image.CGImage); 
0

Hãy thử mã này để làm việc 100% ....

UIImageView * imageview = [[UIImageView alloc] initWithFrame:CGRectMake(20,100, 80, 80)]; 
imageview.image = [UIImage imageNamed:@"myimage.jpg"]; 
[self.view addSubview:imageview]; 
1

Just Follow này

UIImageView *imgview = [[UIImageView alloc]initWithFrame:CGRectMake(10, 10, 300, 400)]; 
[imgview setImage:[UIImage imageNamed:@"YourImageName"]]; 
[imgview setContentMode:UIViewContentModeScaleAspectFit]; 
[self.view addSubview:imgview]; 
Các vấn đề liên quan