2012-07-16 42 views
13

在我的Xcode项目中,我有一个蓝色的引用文件夹,它指向一个带有图像的文件夹。UIImage imageNamed:在蓝色引用的Xcode文件夹中找不到图像

蓝色文件夹的好处是我不必手动将文件添加到Xcode。 所以,当我添加一个新的图像文件夹,它会自动但是显示了在Xcode中,当我尝试使用

[UIImage imageNamed:@"myFileFromTheBlueFolder"]; 

引用从代码的文件没有找到图片虽然顶层文件夹添加到目标。 :-(

我一定要参考不同的,当我从一个蓝色的文件夹,这将恕我直言击败所有具有该文件夹的目的来的图像。

+0

加入您的Xcode文件结构的屏幕截图显示的图像 – nduplessis 2012-07-16 07:37:04

+1

你试过干净?总是似乎必须清理蓝色文件夹 – Martin 2012-07-16 07:39:02

+0

“蓝色”文件夹是一个目录。您可能(或必须)在'imageNamed'参数中包含该路径。否则,你将不得不遵循凯文巴拉德的建议。你还需要扩展你的文件。 – Rob 2012-07-16 07:46:25

回答

9

我想象中的问题是“蓝色文件夹“(例如,文件夹引用,而不是组)被复制到你的应用程序资源中,也就是说,它并不像资源一样被压扁。如果你检查你的内置产品,在你所有的普通资源旁边可能会看到文件夹本身,并且该文件夹中的所有内容仍在该文件夹中

因此,+[UIImage imageNamed:]找不到图像,因为它不会递归到子目录中您可以使用-[NSBundle pathForResource:ofType:inDirectory:]以获取资源路径并将其传递给+[UIImage imageWithContentsOfFile:],但这会丢弃+imageNamed:所具有的内存优化(例如,它缓存使用的图像并丢弃未使用的图像)。

或者,您可以停止使用文件夹引用。或者,您可以从资源构建阶段删除文件夹引用,并添加一个shell脚本构建阶段,将其内容复制到构建的产品中。

+0

非常感谢您的解释。我想我会坚持团体。我也许可以设法使用AppleScript或类似方式自动将文件添加到组中。这样我就可以从蓝色文件夹中获益。 – Besi 2012-07-16 09:35:54

+0

@Besi:你为什么要在Xcode之外的项目中添加文件?教个人直接使用Xcode来添加文件是很简单的。 – 2012-07-16 19:34:48

+0

我必须使用文件夹引用,因为我的某些图像资源具有相同的名称。所以在我的情况下,我如何实现/保持**内存优化**? – Vasu 2013-11-14 05:32:51

-9

写下图像的完整名称。

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

还请注意不区分大小写的名称。

23

Kevin对于+[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"]; 
+0

UIImage(命名为:“猫/ \(imageName).png “) – 2017-11-09 10:08:19

相关问题