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

我有一个 IBOutlet到一个 UIImageView,但是当我看到 UIImageView文档时,我看不到任何关于编程改变它的提示。我必须从那个 UIImageView中提取一个 UIImage对象吗?

279937 次浏览

如果您已经有一个到 UIImageView 的 IBOutlet,那么您所要做的就是抓取一个图像并在接收器上调用 setImage (UIImageView)。下面是两个抓取图像的例子。一个来自网络,一个添加到 Xcode 的参考资料文件夹。

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,然后添加过渡。

附注: 不包括内存管理。

遵循 Jordan 的建议(应该可以实际工作) ,尝试将 UIImageView 设置为可见:

 [imageView setHidden: NO];

还有——别忘了把它附加到主 UIView 上:

[mainView addSubview: imageView];

并带到前线:

[mainView bringSubviewToFront: imageView];

希望把这些步骤结合起来能帮助你解开这个谜团。

这招对我很管用

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

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

对于那些用 google 搜索图片来解决问题的人来说,记得在头文件中正确地声明这个属性,并在实现文件中合成 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]];

注意,NIB 文件不会连接所有的 IBOutlet,直到视图被添加到场景中。如果您要手动连接事物(如果事物位于单独的 NIBs 中,则可能需要手动连接) ,请务必记住这一点。

因此,如果我的测试视图控制器有一个由笔尖连接的“ imageView”,这可能不会起作用:

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

但这个会:

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

我的问题是,我试图在另一个帖子中改变图像,我喜欢这样做:

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

致电:

[self performSelectorOnMainThread : @selector(changeImage) withObject:nil waitUntilDone:NO];
UIColor * background = [[UIColor alloc] initWithPatternImage:
[UIImage imageNamed:@"anImage.png"]];


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

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

也不要忘记设置 图像视图框架

这是密码

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


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


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

这个问题已经有很多答案了,不幸的是没有一个对我有用。 所以为了完整起见,我补充了一些帮助我的东西:

我有多个相同名称的图像-所以我排序他们在子文件夹。我已经有了我想要显示的图像文件的完整路径。与一个完整的路径 imageNamed:(如在所有解决方案上面使用)不工作,是错误的方法。

相反,我现在使用 imageWithContentsOfFile:,如下所示:

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

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

如果是这样的话,那么下面这个对你有帮助: 请投票。 ;-)

斯威夫特中的例子:

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


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

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

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

为了在你的 image 视图上设置图像,请使用下面的代码行,

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

使用 Swift 5(XCode 10.3)

yourImageView.image = UIImage(named: "nameOfTheImage")