135

I have an IBOutlet to a UIImageView, but when I look at the UIImageView doc, I can't see any hints about programmatically changing it. Do I have to fetch an UIImage object from that UIImageView?

4

15 回答 15

185

如果您已经有一个到 UIImageView 的 IBOutlet,那么您所要做的就是抓取一个图像并在接收器 (UIImageView) 上调用 setImage。下面是两个抓取图像的示例。一个来自网络,一个你添加到 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 不包括内存管理。

于 2009-04-01T16:21:54.233 回答
37

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

因此,如果我的测试视图控制器有一个由笔尖连接的“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"];
于 2010-08-22T05:55:23.003 回答
30

这对我有用

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

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

于 2010-06-07T11:48:45.560 回答
23
imageView.image = [UIImage imageNamed:@"myImage.png"];
于 2013-04-24T13:37:37.450 回答
16

对于那些可能正在谷歌搜索以尝试解决他们的问题的人,请记住在头文件中正确声明属性并在实现文件中合成 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]];
于 2010-07-15T14:16:29.237 回答
15

斯威夫特的例子:

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

}
于 2015-03-13T15:49:00.770 回答
9

按照 Jordan 的建议(实际上应该可以),尝试将 UIImageView 设置为可见:

 [imageView setHidden: NO];

还有 - 不要忘记将它附加到主 UIView:

[mainView addSubview: imageView];

并带到前面:

[mainView bringSubviewToFront: imageView];

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

于 2009-07-06T04:44:31.617 回答
8

My problem was that I tried to change the image in an other thread. I did like this:

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

Call with:

[self performSelectorOnMainThread : @selector(changeImage) withObject:nil waitUntilDone:NO];
于 2011-11-29T21:04:22.193 回答
7

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

并且不要忘记设置ImageView Frame

这是代码

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

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

[self.view addSubview:myImage];
于 2012-06-07T06:26:10.060 回答
7

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

let image = UIImage(named: "testImage")
imageView.image = image
imageView.sizeToFit()
scrollView.contentSize = imageView.bounds.size
于 2016-04-01T14:39:31.557 回答
4
myUIImageview.image = UIImage (named:"myImage.png")
于 2015-12-31T23:21:21.523 回答
4

使用 Swift 5 (XCode 10.3)

yourImageView.image = UIImage(named: "nameOfTheImage")
于 2019-08-05T08:02:18.077 回答
2
UIColor * background = [[UIColor alloc] initWithPatternImage:
    [UIImage imageNamed:@"anImage.png"]];

self.view.backgroundColor = background;
[background release];
于 2012-05-28T07:23:21.797 回答
2

这个问题已经有很多答案了。不幸的是,没有一个对我有用。因此,为了完整起见,我添加了对我有帮助的内容:

我有多个具有相同名称的图像 - 所以我在子文件夹中订购了它们。我有我想要显示的图像文件的完整路径。使用完整路径imageNamed:(如上述所有解决方案中使用的)不起作用并且是错误的方法。

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

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

不知道有没有人读到这么远?

如果是这样,并且这个对您有所帮助:请投票。;-)

于 2013-08-27T15:42:54.330 回答
0

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

self.imgObj.image=[UIImage imageNamed:@"yourImage.png"];                         
于 2016-06-13T13:22:06.157 回答