我有IBOutlet
一个UIImageView
,但是当我查看UIImageView
文档时,我看不到有关以编程方式更改它的任何提示.我必须从中获取一个UIImage
对象UIImageView
吗?
如果你已经有一个到UIImageView的IBOutlet,那么你所要做的就是抓取一个图像并在接收器上调用setImage(UIImageView).抓取图像的两个例子如下.一个来自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"];
一旦你有了一个Image,你就可以设置UIImageView:
[imageView setImage:image];
上面的行假定imageView是您的IBOutlet.
而已!如果你想获得幻想,你可以将图像添加到UIView,然后添加过渡.
PS内存管理不包括在内.
请注意,在将视图添加到场景之前,NIB文件不会连接所有IBOutlet.如果您手动连接(如果事情在不同的NIB中,您可能会这样做),请务必牢记这一点.
因此,如果我的测试视图控制器有一个由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"];
这对我有用
[ImageViewName setImage:[UIImage imageNamed: @"ImageName.png"]];
确保ImageView在.h文件中正确声明,并与IB元素链接.
imageView.image = [UIImage imageNamed:@"myImage.png"];
为了那些可能在谷歌上搜索它以试图解决问题的人,请记住在头文件中正确声明属性并在实现文件中合成UIImageView ...如果没有编程设置图像将很困难getter和setter方法.
#import@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]];
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")!)!) } }
遵循Jordan的建议(实际应该可行),尝试将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];
如果你想设置图像UIImageView
编程,然后不要忘记添加UIImageView
为子视图到主视图.
而且也不要忘记设置ImageView框架.
这是代码
UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; myImage.image = [UIImage imageNamed:@"myImage.png"]; [self.view addSubview:myImage];
sizeToFit()
如果您使用UIImageView的大小来设置UIScrollView contentSize和/或计算缩放比例,请不要忘记在更改图像后调用
let image = UIImage(named: "testImage") imageView.image = image imageView.sizeToFit() scrollView.contentSize = imageView.bounds.size
myUIImageview.image = UIImage (named:"myImage.png")