UIImage的imageNamed返回nilUIImage的imageNamed返回nil(UII

2019-05-31 21:16发布

我非常新的iOS和Xcode的。

我试图加载有图像

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

但它只返回零。 图像应该是在我的项目捆绑,考虑到一个事实,我可以从InterfaceBuilder中拖放菜单中选择它,它是通过“添加文件‘项目名称’...”菜单添加到Xcode中。

它没有什么区别我是否使用巴纽或.jpg图像,结果保持不变:他们通过IB工作,但如果我尝试运行imageNamed方法喽。

Answer 1:

只有为什么图像会回来比零imageNamed几个原因:

  • 该图像是不是在你的包。 确保图像实际上是在你的项目中。 确保目标是通过点击该文件,并选择它属于目标检查。

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

  • 您正在使用Retina显示屏,但没有一个@ 2倍的图像。 试着改变你的模拟器,视网膜,看看它是否出现。

  • 如果您使用的是资产目录请确保您有在属性检查器中选择了正确的设备。

一些技巧:

如果使用的是测试模拟器删除应用程序关闭您的模拟器和清理项目,然后重新运行。 如果仍显示它应该显示您的手机上(如果没有它可能与文件名的大小写或者@ 2个版本的问题)。

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

根据这个帖子的最后一件事: JPG图像不加载的UIImage imageNamed有一些问题与imageNamed并没有扩展名的工作一定JPG类型。 海事组织,你应该使用PNG图像无论如何,因为iOS的压缩他们为你,除非你只需要使用JPG。



Answer 2:

重新迈克·韦勒的评论。 该复选框是....



Answer 3:

在我的情况下,PNG格式不正确。

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



Answer 4:

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

我试着不带扩展名来加载,只是@“文件”。 虽然这对PNG图像工作得很好,它不会为JPG。 有一次,我用@“file.jpg”,它的工作!



Answer 5:

如果您确认上述所有的和发现,你的UIImage(命名为:“MYIMAGE”) 的代码返回你正在建设一个动态的框架内零,那么你必须改变代码:

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

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



Answer 6:

尝试

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

代替(具有扩展名)



Answer 7:

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



Answer 8:

尝试重新导出图像。

我有一个类似的问题,UIImage的imageNamed返航这些答案为零,没有固定我的问题。

我发现,它实际上是有点毛病png文件。 我打开了GIMP图像编辑器文件,它保存为一个新文件,再次导出它作为PNG和神奇它开始工作。

我没有在代码改变任何东西所以肯定有毛病的实际图像文件。



Answer 9:

我有一个类似的问题,终于清理固定它:在模拟器中的图片一露面,但运行在iPhone上的应用程序时,ID并没有露面。
我所做的:1)从iPhone 2)进行产品/清洁删除该应用程序后,该错误是固定和形象现身了!



Answer 10:

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



Answer 11:

检查文件是否具有结尾没有空间。 喜欢这个名字的name @2x.png会失败加载,但name@2x.png是罚款



Answer 12:

是否在模拟器上而不是设备上的图像的工作?

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

例如,对于图像名为image.png

[UIImage imageNamed:@"Image"];

将工作在模拟器上而不是设备上...



Answer 13:

请确保您有您正在使用您的.xcassets文件中的设备的图像。 标记为iPad的图像也不会在手机(或模拟电话)上显示出来。



Answer 14:

除了@ Inturbidus的回答是:对于那些谁来到这里的应用程序扩展工作:

您正在使用应该工作的形象属于两个目标-托管应用和推广。

在其他情况下,你总是让nil试图从扩展的代码中访问它。



Answer 15:

对于Xcode的6.4,点击Images.xcassets并检查是否有针对每个要称为图像条目。 在图像上您可能单击鼠标右键,选择“在Finder中显示”检查,如果图像是加入了正确的人。



Answer 16:

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



Answer 17:

在我的情况下,使用一个名称与重音字符被证明是一个贫穷的想法。 我改变了对星状小行星和它工作得很好。



文章来源: UIImage imageNamed returns nil