2009-04-01 45 views

Trả lời

182

Nếu bạn đã có IBOutlet thành UIImageView, thì tất cả những gì bạn phải làm là lấy một hình ảnh và gọi setImage trên bộ thu (UIImageView). Hai ví dụ về chụp một hình ảnh dưới đây. Một từ Web và một bạn thêm vào thư mục Tài nguyên của bạn trong Xcode.

UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://farm4.static.flickr.com/3092/2915896504_a88b69c9de.jpg"]]]; 

hoặc

UIImage *image = [UIImage imageNamed: @"cell.png"]; 

Một khi bạn có một hình ảnh thì bạn có thể thiết lập UIImageView:

[imageView setImage:image]; 

Dòng trên giả định IMAGExem là IBOutlet bạn.

Vậy đó! Nếu bạn muốn có được ưa thích, bạn có thể thêm hình ảnh vào một UIView và sau đó thêm quá trình chuyển đổi.

P.S. Quản lý bộ nhớ không được bao gồm.

+1

cảm ơn, nhưng nó không hoạt động: ( tôi đã xóa hình ảnh trong trình tạo giao diện để UIImageView trống. sau đó tôi thực hiện điều này vào phương thức viewDidLoad. Nhưng không có gì xảy ra. Tên hình ảnh được chỉ định đúng 100%. Tôi cũng đã gán nó với setImage vào ổ cắm. Bất cứ điều gì khác tôi có thể thử? – Thanks

+3

Có thể bạn chưa kết nối IBOutlet với tham chiếu ViewController trong IB. Kiểm tra hình ảnh nằm trong thư mục Tài nguyên. – Jordan

+0

Tôi không chắc chắn các quy tắc/tác động của necro trên SO, nhưng tôi biết điều này đã giúp tôi giải quyết vấn đề của mình. Tôi đang sử dụng iOS v5.1, xcode 4.3.2 – Jake

9

Tiếp theo lời khuyên của Jordan (mà nên làm việc trên thực tế), hãy cố gắng thiết lập các UIImageView để được nhìn thấy:

[imageView setHidden: NO]; 

và cũng - đừng quên để đính kèm nó vào UIView chính:

[mainView addSubview: imageView]; 

và mang đến phía trước:

[mainView bringSubviewToFront: imageView]; 

Hope kết hợp tất cả các bước sau sẽ giúp bạn SOLV e bí ẩn.

29

này làm việc cho tôi

[ImageViewName setImage:[UIImage imageNamed: @"ImageName.png"]]; 

Hãy chắc chắn rằng ImageView được khai báo đúng trong file .h và được liên kết với các phần tử IB.

16

Vì mục đích của những người có thể googling điều này để cố gắng giải quyết vấn đề của họ, hãy nhớ khai báo đúng thuộc tính trong tệp tiêu đề của bạn và tổng hợp UIImageView trong tệp triển khai của bạn ... Sẽ khó thiết lập hình ảnh lập trình mà không có phương thức getter và setter.

#import <UIKit/UIKit.h> 

@interface YOURCONTROLLERNAME : UIViewController { 
    IBOutlet UIImageView *imageToDisplay; 
} 

@property (nonatomic, retain) IBOutlet UIImageView *imageToDisplay; 

@end 

và sau đó trong .m của bạn:

@implementation YOURCONTROLLERNAME 

@synthesize imageToDisplay; 
//etc, rest of code goes here 

Từ đó bạn nên sử dụng tốt sử dụng giống như sau để thiết lập hình ảnh của bạn.

[YOURCONTROLLER.imageToDisplay setImage:[UIImage imageNamed:value]]; 
+0

Cảm ơn! Là mới đối với xcode và iphones nói chung tôi đã thiếu YOURCONTROLLER trước khi imageToDisplay. – Opy

37

Lưu ý rằng tệp NIB không dây lên tất cả IBOutlets cho đến khi xem được thêm vào cảnh. Nếu bạn kết nối mọi thứ theo cách thủ công (bạn có thể thực hiện nếu mọi thứ nằm trong các NIB riêng biệt), điều quan trọng cần lưu ý.

Vì vậy, nếu điều khiển xem thử nghiệm của tôi có một "IMAGExem" dây bởi một ngòi bút, điều này có lẽ sẽ không làm việc:

testCardViewController.imageView.image = [UIImage imageNamed:@"EmptyCard.png"]; 
    [self.view addSubview:testCardViewController.view]; 

Nhưng điều này sẽ:

[self.view addSubview:testCardViewController.view]; 
    testCardViewController.imageView.image = [UIImage imageNamed:@"EmptyCard.png"]; 
7

Vấn đề của tôi là tôi đã cố gắng thay đổi hình ảnh trong một chủ đề khác. Tôi đã làm như thế này:

- (void)changeImage { 
    backgroundImage.image = [UIImage imageNamed:@"img.png"]; 
} 

Gọi với:

[self performSelectorOnMainThread : @selector(changeImage) withObject:nil waitUntilDone:NO]; 
+2

Yup, bit này tôi ... một lần nữa ... Cũng có thể sử dụng 'dispatch_async (dispatch_get_main_queue(),^{backgroundImage.image = [UIImage imageNamed: @" img.png "];})' – Dex

2
UIColor * background = [[UIColor alloc] initWithPatternImage: 
    [UIImage imageNamed:@"anImage.png"]]; 

self.view.backgroundColor = background; 
[background release]; 
+0

Điều này có giống với hình ảnh hiện tại của nền UIView hoặc thuộc tính hình ảnh của UIImageView? – voromax

7

Nếu bạn muốn thiết lập hình ảnh để UIImageView lập trình sau đó Dont Forget thêm UIImageView như subview cho View chính.

Và cũng đừng quên đặt Khung hình ảnh.

đây là mã

UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; 

myImage.image = [UIImage imageNamed:@"myImage.png"]; 

[self.view addSubview:myImage]; 
22
imageView.image = [UIImage imageNamed:@"myImage.png"]; 
2

Câu hỏi này đã có rất nhiều câu trả lời. Thật không may không làm việc cho tôi. Vì vậy, để hoàn thành, tôi thêm những gì đã giúp tôi:

Tôi có nhiều hình ảnh có cùng tên - vì vậy tôi đã đặt chúng trong các thư mục con. Và tôi đã có đường dẫn đầy đủ đến tệp hình ảnh mà tôi muốn hiển thị. Với đường dẫn đầy đủ imageNamed: (như được sử dụng trong tất cả các giải pháp ở trên) không hoạt động và là phương pháp sai.

Thay vì bây giờ tôi sử dụng imageWithContentsOfFile: như vậy:

self.myUIImage.image = [UIImage imageWithContentsOfFile:_currentWord.imageFileName]; 

Không biết, nếu có ai đọc mà đến nay?

Nếu vậy và điều này đã giúp bạn: hãy bỏ phiếu. ;-)

7

Ví dụ trong Swift:

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet var myUIImageView: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    @IBAction func myAction(sender: UIButton) { 
     let newImg: UIImage? = UIImage(named: "profile-picture-name") 
     self.myUIImageView.image = newImg 
    } 

    @IBAction func myAction2(sender: UIButton) { 
     self.myUIImageView.image = nil 
     self.myUIImageView.image = UIImage(data: NSData(contentsOfURL: NSURL(string: "http://url/image.png")!)!) 
    } 

} 
4
myUIImageview.image = UIImage (named:"myImage.png") 
+1

Được gắn cờ là Chất lượng Rất Thấp. Hãy cải thiện nó. – Drew

+0

Bạn có thể làm điều đó bằng cách mở rộng trên đó. –

5

Đừng quên gọi sizeToFit() sau khi bạn thay đổi hình ảnh nếu bạn sau đó sử dụng kích thước của UIImageView thiết UIScrollView contentSize và/hoặc tính toán quy mô thu phóng

let image = UIImage(named: "testImage") 
imageView.image = image 
imageView.sizeToFit() 
scrollView.contentSize = imageView.bounds.size 
0

Để đặt hình ảnh trên hình ảnh của bạnXem sử dụng bên dưới dòng mã,

self.imgObj.image=[UIImage imageNamed:@"yourImage.png"];       
+0

sao chép Hình ảnh trong dự án của bạn và sau đó sử dụng mã trên –

Các vấn đề liên quan