如何以编程方式更改在UIImageView中显示的图像?
我有一个IBOutlet
到UIImageView
,但是当我看着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"];