UIImage imageNamed返回nil

我对iOS和Xcode相当新颖。

我试图加载一个图像

[UIImage imageNamed:@"imageName.png/jpg and so on"]; 

但它只返回零。 图像应该在我的项目包中,考虑到我可以从InterfaceBuilder的拖放菜单中select它,并通过“添加文件到”项目名称“…”菜单将其添加到Xcode。

我使用.png或.jpg图像没有区别,结果保持不变:它们通过IB工作,但如果我尝试自己运行imageNamed方法,则不会。

提前感谢任何帮助!

只有几个原因,为什么图像会返回零与imageNamed:

  • 图像不在你的包里。 确保图像实际上在您的项目中。 确保通过点击文件并select它所属的目标来检查目标。

  • 您的图片名称拼写错误或扩展名有问题。

  • 您正在使用视网膜显示器,但没有@ 2x图像。 尝试改变你的模拟器视网膜,看看它是否显示。

一些技巧:

如果您正在使用模拟器进行testing,请从模拟器中删除应用程序并清理项目,然后重新运行。 如果它仍然显示,它应该显示在您的手机(如果不是这可能是一个问题的情况下的文件名或@ 2x版本)。

如果你正在testing你的手机并没有显示出来,确保你使用的是相同版本的模拟器(如果你有一个iPhone 4 / 4s请确保使用视网膜4 / 4s模拟器)。

根据这篇文章的最后一件事: JPG图像不加载UIImage imageNamed某些JPGtypes与imageNamed和没有扩展名有一些问题。 国际海事组织,你应该使用PNG,因为iOS为你压缩,除非你只需要使用JPG。

重新迈克韦勒的评论。 checkbox是…

在这里输入图像描述

就我而言,巴新是畸形的。

出于某种原因Xcode预览显示正确,但是当我尝试加载它与UIImage,它返回零。

我只是有这个问题的JPG文件名为磁盘“file.jpg”

我试图加载没有扩展名,只是@“文件”。 虽然这对PNG工作正常,它不适用于JPG。 一旦我用@“file.jpg”,它的工作!

如果您validation了上述所有内容,并且发现您的UIImage(名为:“myImage”) 从您正在构build的dynamic框架内的代码返回nil,则必须将代码更改为:

 UIImage(named: "myImage", in: Bundle(identifier: "com.myframework.name"), compatibleWith: nil) 

这应该正确地从CXAssets中检索资产。

尝试

 [UIImage imageNamed:@"imageName.png"]; 

相反(有扩展名)

我有同样的问题:@“photo.jpg”导致“无”UIImage。 更改为“实际”文件规格,@“photo.JPG”工作正常! 我没有意识到那里有大小写敏感的地方! 非常不直观。

尝试重新导出您的图片。

我有一个类似的问题,UIImage imageNamed返回零,这些答案都没有解决我的问题。

我发现这实际上是png文件的错误。 我在GIMP图像编辑器中打开文件,将其保存为一个新文件,再次导出为PNG,神奇地开始工作。

我根本没有改变任何代码,所以实际的图像文件肯定有问题。

我有一个类似的问题,最后清理修复:图像显示在模拟器,但没有显示在iPhone上运行应用程序时,ID。
我做了什么:1)从iPhone删除应用程序2)执行产品/清洁后,该错误被修复,图像显示!

尝试使用UIImage(contentsOfFile:)而不是imageNamed 。 它为我工作与下载的图像。

检查文件最后没有空格。 像name @2x.png这样的name @2x.png将无法加载,但是name@2x.png

图像是否在模拟器上工作,但不在设备上?

如果是这样,在这种情况下, 总是与名称的情况下。 该设备需要确切的情况下,如果我没有记错的话,模拟器不是那么挑剔。

例如用于名为image.png的图像

 [UIImage imageNamed:@"Image"]; 

将在模拟器上工作,但不在设备上…

确保您的.xcassets文件中使用的DEVICE图像。 标记为iPad的图像不会显示在电话(或模拟电话)上。

除了@ Inturbidus的回答:对于来这里工作的应用程序扩展的人

您正在使用的图片应该属于目标托pipe应用和扩展程序。

在其他情况下,您将永远不会尝试从扩展的代码中访问它。

对于Xcode 6.4,单击Images.xcassets并检查是否有您调用的每个图像的条目。 你可以右击图像并select“在Finder中显示”来检查图像是否是正确的图像。

确保图像的属性检查器名称字段完全匹配您正在使用的名称。 在我的情况下,图像是文件夹的一部分,所以图像名称是“文件夹/名称”。 用这个长名解决了这个问题。 XCode 7.3.1

就我而言,使用带有重音字符的名字被certificate是一个糟糕的主意。 我改变了Astéroïdes小行星,它运作良好。

    Interesting Posts