如何以编程方式更改在UIImageView中显示的图像?

我有一个IBOutletUIImageView ,但是当我看着UIImageView文档,我看不到有关如何以编程方式更改它的任何提示。 我必须从该UIImageView获取UIImage对象吗?

如果你已经有一个UIImageView的IBOutlet,那么你所要做的就是获取一个图像,然后在接收器(UIImageView)上调用setImage。 下面是抓取图片的两个例子。 一个来自Web,另一个来自Xcode的Resources文件夹。

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

要么

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

一旦你有一个图像,你可以设置UIImageView:

 [imageView setImage:image]; 

上面的行假设imageView是你的IBOutlet。

而已! 如果你想获得幻想,你可以添加图像到UIView,然后添加转场。

PS内存pipe理不包括在内。

请注意,在将视图添加到场景之前,NIB文件不会连接所有的IBOutlet。 如果你手动连线(如果事情在单独的NIB中,你可能会这样做),记住这一点很重要。

所以如果我的testing视图控制器有一个“图像视图”由笔尖连线,这可能不会工作:

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

但是这将会:

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

这对我有效

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

确保ImageView在.h文件中正确声明,并与IB元素链接。

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

对于那些可能会用这个来解决他们的问题的人来说,请记住在你的头文件中正确地声明属性,并在你的实现文件中合成UIImageView …这将很难以编程方式设置图像getter和setter方法。

 #import <UIKit/UIKit.h> @interface YOURCONTROLLERNAME : UIViewController { IBOutlet UIImageView *imageToDisplay; } @property (nonatomic, retain) IBOutlet UIImageView *imageToDisplay; @end 

然后在你的.m:

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

从那里你应该很好用像下面这样的东西来设置你的形象。

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

遵循Jordan的build议(实际上应该可以),请尝试将UIImageView设置为可见:

  [imageView setHidden: NO]; 

也不要忘记把它附加到主UIView:

 [mainView addSubview: imageView]; 

并带到前面:

 [mainView bringSubviewToFront: imageView]; 

希望结合所有这些步骤将帮助你解开这个谜团。

我的问题是,我试图改变另一个线程中的图像。 我这样做:

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

打电话给:

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

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")!)!) } } 

如果你想以编程方式将图像设置为UIImageView那么不要忘记将UIImageView作为视图添加到主视图。

也不要忘记设置ImageView框架

这里是代码

 UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; myImage.image = [UIImage imageNamed:@"myImage.png"]; [self.view addSubview:myImage]; 

如果使用UIImageView的大小来设置UIScrollView的contentSize和/或计算缩放比例,则在更改图像之后不要忘记调用sizeToFit()

 let image = UIImage(named: "testImage") imageView.image = image imageView.sizeToFit() scrollView.contentSize = imageView.bounds.size 
 myUIImageview.image = UIImage (named:"myImage.png") 
 UIColor * background = [[UIColor alloc] initWithPatternImage: [UIImage imageNamed:@"anImage.png"]]; self.view.backgroundColor = background; [background release]; 

这个问题已经有了很多答案。 不幸的是没有为我工作。 所以为了completenes我加了什么帮助我:

我有多个同名的图像 – 所以我命令他们在子文件夹。 我有完整的path,我想要显示的图像文件。 有一个完整的pathimageNamed:如上面所有的解决scheme中使用)没有工作,是错误的方法。

相反,我现在使用imageWithContentsOfFile:像这样:

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

不知道,如果有人读到那么远?

如果是这样,这一个帮助你:请投票。 😉

要设置图像在您的imageView使用下面的代码行,

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