【发布时间】:2010-10-16 21:57:12
【问题描述】:
我有一个IBOutlet 到一个UIImageView,但是当我查看UIImageView 文档时,我看不到任何有关以编程方式更改它的提示。我是否必须从 UIImageView 中获取 UIImage 对象?
【问题讨论】:
标签: ios uiimageview
我有一个IBOutlet 到一个UIImageView,但是当我查看UIImageView 文档时,我看不到任何有关以编程方式更改它的提示。我是否必须从 UIImageView 中获取 UIImage 对象?
【问题讨论】:
标签: ios uiimageview
如果您已经有一个到 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,然后添加过渡。
附:不包括内存管理。
【讨论】:
请注意,在将视图添加到场景之前,NIB 文件不会连接所有 IBOutlets。如果您要手动进行连接(如果事物位于单独的 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 <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]];
【讨论】:
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];
【讨论】:
dispatch_async(dispatch_get_main_queue(), ^{backgroundImage.image = [UIImage imageNamed:@"img.png"];})
如果您想以编程方式将图像设置为UIImageView,请不要忘记将UIImageView 作为SubView 添加到主视图。
别忘了设置ImageView Frame。
这里是代码
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")
【讨论】:
使用 Swift 5 (XCode 10.3) 只是
yourImageView.image = UIImage(named: "nameOfTheImage")
【讨论】:
UIColor * background = [[UIColor alloc] initWithPatternImage:
[UIImage imageNamed:@"anImage.png"]];
self.view.backgroundColor = background;
[background release];
【讨论】:
这个问题已经有很多答案了。不幸的是,没有一个对我有用。 因此,为了完整起见,我添加了对我有帮助的内容:
我有多个具有相同名称的图像 - 所以我将它们放在子文件夹中。我有我想要显示的图像文件的完整路径。使用完整路径 imageNamed: (如上述所有解决方案中所使用的)不起作用并且是错误的方法。
相反,我现在像这样使用imageWithContentsOfFile::
self.myUIImage.image = [UIImage imageWithContentsOfFile:_currentWord.imageFileName];
不知道有没有人读到这么远?
如果是这样,并且这个对您有帮助:请投票。 ;-)
【讨论】:
要在您的 imageView 上设置图像,请使用以下代码行,
self.imgObj.image=[UIImage imageNamed:@"yourImage.png"];
【讨论】: