分配有效的 UIImage 后 UIImageView.image 始终为零

Posted

技术标签:

【中文标题】分配有效的 UIImage 后 UIImageView.image 始终为零【英文标题】:UIImageView.image is always nil after assigning a valid UIImage 【发布时间】:2013-11-05 12:40:46 【问题描述】:

我有一个UIImageView 在一个StoryBoard 的视图中,IBOutlet 连接已正确建立(对此进行双重和三重检查),要显示的图像已添加到正确的目标等。(已现在调试一天)UIImageView 显示图像,如果我在 Interface Builder 中设置它们。

但是,如果我将UIImageView.image 属性设置为有效的UIImage(调试时甚至可以看到预览)加载任何图像,它总是显示第一张图像,而不是新图像,或者如果我将其留空在 IB 中,它保持零值。

如果我在 StoryBoard 的另一个视图中尝试相同的操作并且 UIImageView 正确显示 UIImage 的内容,只会在此视图中发生这种情况。

我们将不胜感激任何线索。

已编辑:

感谢回复,已经测试过也可以通过按钮设置,代码是这样的代码:

属性声明为:

@property (strong, nonatomic) IBOutlet UIImageView *theRecomendationImage;

已经测试过弱和强,只是为了确定。

IBAction 实现(经过测试被调用)

- (IBAction)changeImage 

    UIImage *theImageToTint = [UIImage imageNamed:@"Sunny"];
//    theImageToTint = [theImageToTint imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
    self.theRecomendationImage.tintColor = [UIColor yellowColor];
    self.theRecomendationImage.image = theImageToTint;

在调试时,如果你检查 theImageToTint 的值,它是一个有效的图像(不是 nil),你甚至可以快速查看图像。但是当我将它分配给UIImageView 时,该值始终为零。没有错误,保持nil。

感谢您的关注,对于不完整的问题,我们深表歉意。

已编辑:

如果你执行

po self.theRecomendationImage.image 

在执行赋值前后的调试控制台中:self.theRecomendationImage.image = theImageToTint;值为 nil。

已编辑:

如果您通过代码添加UIImageView,它会在您为其分配新图像时工作并更新,这让我指出一些Storyboard 问题。

是否有任何工具可以验证情节提要?

【问题讨论】:

你能给我看一些代码吗,比如你在哪里设置了这个 UIImage? 没有看到任何代码(你应该发布)。我猜你是在viewDidLoad 或其他类似的方法中设置图像。如果是这种情况,请尝试将其设置为 viewWillAppear: 再次,没有看到代码我只是在黑暗中拍摄。 是的@Firo 我也这么认为:) 我知道你说IBOutlet连接正常但是用这个方法打印self.theRecomendationImage看看是不是nil。 这个你想出来了吗?我在 ios7 上遇到了同样的问题,但在 iOS6.1 上有效。 【参考方案1】:

只需确保图像格式为.png 而不是.jpg 或其他任何格式。

【讨论】:

以上是关于分配有效的 UIImage 后 UIImageView.image 始终为零的主要内容,如果未能解决你的问题,请参考以下文章

比较具有 UIImageViews 的 UIButtons

当动画 UIImage 被分配两次时,UITableViewCell 中的 UIImageView 没有动画

后退按钮后未释放 UITableViewCell 的 UIImage 的内存

如何分配“字符串”类型的值?输入“UIImage?”

iOS:UIImage 不可分配(FBSDKGraphRequest)

无法将 CKAsset 类型的值分配给 UIImage 类型