UIImage的imageNamed:没​​有找到内引用蓝Xcode的文件夹图片(UIImage i

2019-09-19 12:38发布

在我的Xcode项目我有一个蓝色的文件夹,引用指向与图像的文件夹。

蓝色文件夹的好处是,我不需要手动将文件添加到Xcode中。 所以,当我添加一个新的图像文件夹,它会自动显示不过了Xcode中,当我尝试使用引用从代码的文件

[UIImage imageNamed:@"myFileFromTheBlueFolder"];

它没有找到图片虽然顶层文件夹添加到目标。 :-(

我必须以不同的方式引用图像时,我从蓝色的文件夹,这将恕我直言击败所有具有该文件夹的目的来。

Answer 1:

我想这个问题是“蓝色的文件夹”(例如文件夹的参考,而不是一组)正被复制到你的应用程序资源一字不差。 换句话说,它没有被夷为平地像资源通常是。 如果你检查你的产品建,旁边的一切正常的资源,你可能会看到该文件夹​​一样,这是文件夹中的一切仍是在文件夹中。

因此, +[UIImage imageNamed:]找不到图像,因为它不递归到子目录。 您可以使用-[NSBundle pathForResource:ofType:inDirectory:]才能到资源的路径,并传递至+[UIImage imageWithContentsOfFile:] ,但这种放弃的内存优化, +imageNamed:具有(例如在其缓存中使用的图像和滴未使用的图像)。

或者,您可以停止使用文件夹参考。 或者你可以删除您的资源文件夹参考建造阶段,并添加一个shell脚本生成阶段是复制其内容到你的内置产品代替。



Answer 2:

凯文是对有关内存的优化+[UIImage imageNamed:]提供,但它绝对是可以访问的蓝色文件夹(文件夹引用)的图像。 所有你需要做的是文件夹名称添加到图像名称。 例如:

你的资源被组织这样的:

Icons (blue folder / folder reference)
  |__camera.png
  |__checkmark.png
Shared (yellow folder / xcode group)
  |__back.png
  |__logo.png

您可以访问像这样的图片:

[UIImage imageNamed:@"Icons/camera"];
[UIImage imageNamed:@"Icons/checkmark"];

[UIImage imageNamed:@"back"];
[UIImage imageNamed:@"logo"];


Answer 3:

写图像的完整名称。

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

同时请记住不区分大小写的名字。



文章来源: UIImage imageNamed: does not find image within blue referenced Xcode-folder