【问题标题】:How to dynamically change an image in an Image View?如何动态更改图像视图中的图像?
【发布时间】:2024-01-13 15:06:01
【问题描述】:

基本上,我有一个主 UIImageView,然后我以编程方式在顶部添加另一个 Image View(带图像)。我想做的是在点击时动态换出图像,但是当我尝试这样做时,图像不会显示。 以下是我目前实现的:

在情节提要中://mainImgView

在.h:

#import "ViewController.h"
@interface ViewController ()
     @property (nonatomic, strong) UIImageView *overlayImgView;
@end

英寸米:

-(IBAction) addOverlayImgViewWImgToMainImgView:(UIButton *)sender{    
    UIImage *tempImg1 = [UIImage imageNamed:@"xcode_icon.png"];

    self.overlayImgView = [[UIImageView alloc]initWithImage:tempImg1];
    [mainImgView addSubview:self.overlayImgView];   
}

-(IBAction) swapImg:(UIButton *)sender{
    UIImage *tempImg2 = [UIImage imageNamed:@"another_icon.png"];
    [self.overlayImgView setImage:tempImg2];
}

如果有人能说明我做错了什么,将不胜感激。谢谢。

我查看的链接包括:

iOS: How to dynamically add image to a parent view?

UIImage imageNamed returns nil

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIImageView_Class/Reference/Reference.html#//apple_ref/occ/instm/UIImageView/initWithImage:

附加信息:

主图像视图上已经有一个图像,我正在向它添加一个较小的 (50x50) 图像视图(带图像)。当我尝试将其换出时,当前图像正在消失,然后替换为一个白框。

图像文件为 50x50,位于我的“支持的文件”文件夹中。我没有第二张“@2X”图片。

【问题讨论】:

  • 为什么不直接设置mainImageView图片呢? (而不是添加覆盖)?还是我误解了你的问题...
  • 它已经设置了另一个图像(我正在用另一个图像覆盖它)。谢谢。

标签: ios objective-c uiimageview uiimage


【解决方案1】:

试试

- (IBAction)swapImg:(UIButton *)sender{
    UIImage *tempImg2 = [UIImage imageNamed:@"another_icon.png"];
    self.mainImgView.image = tempImg2;
}

【讨论】:

  • 谢谢,但当前图像仍然只是消失,新图像(tempImg2)没有出现。
  • 实际上,用另一个图像进行了尝试,进行了清理/构建,并添加了“@2x”并且工作正常。你的方法也行。