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的主要内容,如果未能解决你的问题,请参考以下文章
分配有效的 UIImage 后 UIImageView.image 始终为零
UIImageView 不显示从通知中获取的 UIImage
将 UIImage 用于 UIImageView 时 UIImage 失真