我有一个指向UIImageView
的IBOutlet
,但是当我查看UIImageView
文档时,我找不到任何有关以编程方式更改该图像的提示。我是否必须从该UIImageView
获取一个UIImage
对象?
我有一个指向UIImageView
的IBOutlet
,但是当我查看UIImageView
文档时,我找不到任何有关以编程方式更改该图像的提示。我是否必须从该UIImageView
获取一个UIImage
对象?
如果你已经有一个指向UIImageView的IBOutlet,那么你只需要获取一张图片并在接收器(UIImageView)上调用setImage即可。下面是两个获取图片的例子。一个是从Web上获取,另一个是将其添加到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中并添加过渡效果。
附言:内存管理不包括在内。
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"]];
确保在.h文件中正确声明了ImageView,并将其与IB元素链接。
imageView.image = [UIImage imageNamed:@"myImage.png"];
在 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...如果没有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]];
在更改 UIImageView 的图片后,如果您使用 UIImageView 的尺寸来设置 UIScrollView 的 contentSize 和/或计算缩放比例,请不要忘记调用 sizeToFit()
。
let image = UIImage(named: "testImage")
imageView.image = image
imageView.sizeToFit()
scrollView.contentSize = imageView.bounds.size
按照Jordan的建议(实际上应该有效),尝试将UIImageView设置为可见:
[imageView setHidden: NO];
[mainView addSubview: imageView];
[mainView bringSubviewToFront: imageView];
我的问题在于我试图在另一个线程中更改图片。我尝试了以下步骤:
- (void)changeImage {
backgroundImage.image = [UIImage imageNamed:@"img.png"];
}
Call with:
[self performSelectorOnMainThread : @selector(changeImage) withObject:nil waitUntilDone:NO];
dispatch_async(dispatch_get_main_queue(), ^{backgroundImage.image = [UIImage imageNamed:@"img.png"];})
。 - DexUIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
myImage.image = [UIImage imageNamed:@"myImage.png"];
[self.view addSubview:myImage];