UIImageView 的 UIImage 为 nil

Posted

技术标签:

【中文标题】UIImageView 的 UIImage 为 nil【英文标题】:UIImage for UIImageView is nil 【发布时间】:2012-10-13 21:34:35 【问题描述】:

我在 UIImageView 中显示 UIImage 时遇到问题。我在 *** 上到处寻找类似的问题,但没有一个修复对我有帮助。

    图片确实在我的包中 文件检查器 -> 已检查图像的目标成员身份 IBOutlet 已连接(我已尝试使用 IBOutlet 并以编程方式进行) png 和 jpg 都适用

这是使用 Interface Builder 的代码 -

//@property and @synthesize set for IBOutlet UIImageView *imageView
    - (void)viewDidLoad
    
        [super viewDidLoad];
        NSAssert(self.imageView, @"self.imageView is nil. Check your IBOutlet connection");
        UIImage *image = [UIImage imageNamed:@"banner.jpg"];
        NSAssert(image, @"image is nil");
        self.imageView.image = image;      
    

此代码将以 NSAssert 终止,在控制台中打印“image is nil”。

我还尝试直接从属性检查器中选择图像:

但是它仍然没有显示图像(仍然以 NSAssert - 'image is nil' 结束)。

任何帮助或建议将不胜感激。

谢谢

【问题讨论】:

在测试是否为 nil 之前尝试为您的图像视图设置图像 您是否将图像添加到目标? @geraldWilliam 试过了,没用... 图像可能已损坏,请尝试另一个 看看你是否可以在你的代码中看到文件 - 使用 path = [[NSBundle main bundle] pathForResource:@"banner" ofType:@"jpg"];断言(路径); [[NSFileManager defaultManager] fileExists:path]'。我刚刚输入了这个,但你明白了 - 使用第一个获取路径,确保你得到它,然后要求文件管理器查看它是否存在。如果可以,您可以将文件读入 NSData 对象,然后记录大小,然后查看是否可以使用 imageWithData 创建图像 - 如果失败,则 ios 可能无法解压缩它。 【参考方案1】:

看看你是否可以在你的代码中看到文件 - 使用

path = [[NSBundle main bundle] pathForResource:@"banner" ofType:@"jpg"];
assert(path); 
assert([[NSFileManager defaultManager] fileExists:path])

我刚刚输入了这个,但你明白了 - 使用第一个获取路径,确保你得到它,然后询问文件管理器是否存在。如果可以,您可以将文件读入 NSData 对象,然后记录大小,然后查看是否可以使用 imageWithData 创建图像 - 如果失败,则 iOS 可能无法解压缩它。

我经常拍摄在 PhotoShop 或其他地方创建的图像,在预览中加载它们,然后在将它们添加到我的项目之前保存它们。一般来说,如果 Apple 技术将图像保存为您想要的任何格式(png、jpg 等),那么 iOS 很可能也可以打开它。

【讨论】:

感谢您在评论部分对问题的回答。它解决了我遇到的问题。如果您可以编辑此帖子并将该评论放在这里,我将接受它作为最佳答案。谢谢。

以上是关于UIImageView 的 UIImage 为 nil的主要内容,如果未能解决你的问题,请参考以下文章

为 UIImageView 手动缩放 UIImage

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

UIImageView 不显示从通知中获取的 UIImage

将 UIImage 用于 UIImageView 时 UIImage 失真

如何在“方面填充”模式下将 UIImageView 裁剪为新的 UIImage?

如何在“方面填充”模式下将 UIImageView 裁剪为新的 UIImage?