无法加载设备上运行的捆绑软件中从nib引用的映像
SplitView[1290:307] Could not load the "canary04.png" image referenced from a nib in the bundle with identifier "xx.co.mycompany.ipad.SplitView"
我只在设备上运行时出现错误。 在模拟器中运行没有问题。
我正在使用UIImageView在界面生成器中直接使用图像。
编辑:我已经添加了一个不同的新图像到不同的笔尖,这没有任何问题。
有人有主意吗?
iOS设备上的文件系统区分大小写,所以很可能是个案例。 (Mac OS X通常不区分大小写,因此您在模拟器中没有看到这个问题。)
因此,请检查您是否在代码中使用与文件名本身相同的大小写。
它可能不会被添加到您的目标和XCode 4中,你可以这样做:
- 在您的项目视图中,单击您的项目名称
- select您的目标并select“构build阶段”选项卡
- 拖动您的图像文件到您的“复制束资源”部分
这为我修好了。
XCode(蓝色文件夹)中的引用文件夹中有图像吗? 如果是这样,你必须在图像path中包含文件夹名称,如“Images / canary04.png”
简单的方法
1只需在命令shell中执行grep来查找引用图像的string:
grep -R 'canary04.png' YourMainDirectoryFolder/*
2它会给你(例如)这样的输出:
YourProject/en.lproj/YourViewController.xib: <textField borderStyle="roundedRect" background="canary04.png" id="19">
3你现在知道哪个nib文件和它是哪个元素。 只要进入文件并删除参考。
- 删除图像所在的蓝色文件夹。
- 再次导入并select“如果需要复制项目”。
- select“创build组”NOT文件夹
将图像保存为PNG-24。 这个对我有用
你可以做到这一点从你的故事板,或笔尖检查它。 打开它作为源代码:
然后“查找”其中的图像名称,看看它是否存在,但在您的项目已经无效,可能你已经删除或改变了它的名字,现在它似乎并不有效。
你把文件包含在目标中了吗? 右键单击Xcode中的Target,selectGet Info,然后select顶部的“Targets”组。 确保您的预定目标(S)被选中。
祝你好运。
编辑:上面的文本应该已经阅读右键单击Xcocde中的文件(canary04.png) ,然后select获取信息…
对不起,错字。
当我升级到Xcode 4.4.1时,我遇到了这个问题。 我发现尽pipe我已经删除了故事板中的图像(和相应的button等),但在故事板文件中仍然提到了它们(在tabBarItems字段中)。 我手动评论他们(),产品 – >清洁,我没有得到任何错误。
我知道故事板中必须存在虚假引用,因为我以前删除了TabBar,而且当前的应用程序没有问题,只是在控制台中使用恼人的消息。
我遇到过同样的问题。 尝试
- 清洁
- build立和运行
它与我合作
在我的情况下,这是因为Photoshop没有正确保存我的文件。 在文件保存对话框中,我点击myfile.png试图覆盖该文件,并以png格式保存文件。
在点击我想覆盖的文件之前,我必须确保将文件格式实际更改为PNG,从而保存在实际的png文件中,从而可以被iOS读取。 有趣的是,界面生成器显示我的psd-as-png文件就好了。
更一般地说,确保你的文件实际上是你认为是这样的格式,因此iOS是期待的。
解决scheme1:
在我的情况下,我已经复制了包含图像的文件夹,甚至选中“目的地:如果需要复制项目” 。 但是它没有被添加到“Build Phase”的“Copy Bundle Resources”中。
您可以添加图像如下:
- select目标
- select“构build阶段”选项卡
- select“复制包资源 ”
- 点击下面的“+” (加号)button
- find图像并添加它
解决scheme2:
通过select“移至颠簸”来删除图像 。 再次添加您的项目中的图像与“目标:复制项目,如果需要”选中。
Note : Make sure that you add images in Assets.xcassets folder and not outside it.
我也得到这个错误。 我将描述我的场景:
我有一个子目录“IMG”,其中有一些PNG的。
其中一个PNG是“ic_timeprogress_000.png”
在故事板(视觉devise师)我有一个imageView和图像被设置为“ic_timeprogress_000.png”(不编程)。 devise师正确地显示了imageView:
虽然在运行应用程序时,错误被抛出。
所以在故事板中,我从“ic_timeprogress_000.png”更改为“img / ic_timeprogress_000.png”,导致在devise器中无法正确显示图像,但在运行时正确显示(无错误)
虽然我以编程方式改变imageView.image
,所以这个“初始图像”从来没有使用过。
检查以确保canary04.png
存在于您的项目中,并且不会被删除。
我的问题是,我把图像保存为.jpg,并将名称更改为.png(仍然是jpg格式)。 它与模拟器一起工作
检查你的图像名称。 如果它包含一些空格,则图像将在模拟器中运行,但不会在设备中显示。 运行时检查大小写敏感的名称等
我在iOS 8中遇到了一个不同的问题。在我的情况下,问题是我select了设备特定的图像集,然后select了iPad。 将其更改回Universal解决了问题。
可以在images.xcassets文件中find此设置,在第三列中显示图像集的属性检查器。
在这种情况下,即使将图像添加到images.xcassets,图像也不会显示在故事板或NIB文件中。 他们也不会显示在模拟器或设备。
当我尝试在Interface Builder(.xib)文件中设置imageView的图像时,我遇到了这个问题。
(我正在使用图像资产)
使用theImage.jpeg
和theImage@2x.jpg
我有2个图像theImage.jpeg
Builder可以在编译时使用这些jpg / jpeg
格式显示真实图像。 但是我在运行时遇到这个错误:
Could not load the "theImage" image referenced from a nib in the bundle with identifier "org.etc.etc"
然后我改变我的图像文件格式为.png
,它的工作!
如果您尝试设置的图片的格式不同,请尝试使用此解决scheme。
我也遇到了jpeg文件无法成功加载的问题,但是我解决了这个问题,而没有将它们改为png格式:例如,如果你有一个名为“bg.jpg”的图像,不要在故事板中使用“bg”名称列在下拉select列表中),而应该在名称字段中明确写入“bg.jpg” 。
对于编程基础的图像视图,我想使用.jpg扩展像[UIImage imageNamed:@"xx.jpg"]
也应该工作(虽然我没有testing虽然)。
尝试清理项目并确保info.plist与xx.co.mycompany.ipad.SplitView匹配
检查图像名称。 然后检查是否可以在paint或photoshop中打开图像。 如果图像是在Photoshop中创build的,有时会出现与.png有冲突的情况
我有同样的问题,如果您的图像是在子文件夹,您需要select“创build组子文件夹”选项,当您复制资源。
我有这个Xcode 5的问题,看起来“组合高分辨率的艺术品”是罪魁祸首。 我打开了应用程序包,所有图像都是* .tiff,导致图像“找不到”:S
修正 :
打开项目设置,并在顶部search“组合”。 将该设置更改为NO。
出于某种原因,每个人都错过了这个重要的修复。
在我的情况下,所有图像显示在> iOS 7,但不是与iOS 6.1的设备罚款。 解决scheme是,iOS7是区分大小写,但iOS 6.1不适合我。 我有名为“myImageName”的图像,并命名为“myimagename”女巫导致我的旧iPhone 3无法显示这些图像。
所以重命名他们解决了它。
尝试每一个答案在这里,没有什么,所以这里是另一个小故障,你的图标名称不能有点(。),因为如果它(和Xcode允许你这样做),而故事板中的图标显示,他们将不会加载无论是在模拟器或设备。
也许在设置button的图像之后,您更改了图像的名称。
2015 – 仍然有这个问题。 我正在引用一个不再存在于一个标签button中的图像。
解决scheme:只需检查所有button,UIImage等,并确保您所引用的图像实际上存在于您的项目中。
当我不小心将另一个图像集添加到资源目录文件时,我遇到了这个问题。 我意识到错误后重新命名了它,但似乎并不奏效。
删除文件并再次添加解决了这个问题。
什么对我来说是确保文件的所有者在界面生成器有一个“查看”sockets。
从IB中,从“占位符”中select文件的所有者,然后在“连接检查器”中确保视图sockets连接到当前XIB的主视图。
发生这种情况是因为我在某个时候删除了主视图,忘记重新连接我的新视图。
希望它可以帮助别人。
就我而言,问题是图像格式。 他们是'JPG'文件,而Xcode期待'PNG'文件。 更改文件格式解决了问题。