0

为什么我可以从主包中加载本地 xml 文件,但我无法加载图像?

NSString *path = [[NSBundle mainBundle] resourcePath];

这被加载(我知道,因为我可以跟踪它)/Users/me/Library/Application Support/iPhone Simulator/User/Applications/5B888456-40FF-4C72-A2ED-5D5CFA287777/MyApp.app/test.xml

此图像永远不会加载(也不会加载任何图像):/Users/me/Library/Application Support/iPhone Simulator/User/Applications/5B888456-40FF-4C72-A2ED-5D5CFA287777/MyApp.app/background.png

4

6 回答 6

3

您可以使用[UIImage imageNamed:@"background.png"].

这将加载 background.png(它应该位于 Xcode 的 Resources 文件夹中)。

于 2009-05-18T23:34:08.287 回答
3

您在评论中说您正在为路径编写 NSURL。要对本地文件系统路径(例如包中的文件)执行此操作,您需要使用NSURL fileURLWithPath:.

于 2010-11-20T04:11:49.283 回答
1

就像是

UIImage *testimg = [UIImage imageNamed:myfilename];

if (nil==testimg) [testimg initWithContentsOfURL:myurl];

我现在远离编译器,所以我无法检查是否需要先将其下载到 NSData 对象,然后再将其制作为图像。您还应该将 initWithContents... 放在 try...catch... finally 块中。

于 2010-11-19T07:57:36.173 回答
1

这里有两种可能:

1)您的图像文件名不正确。这意味着,文件名区分大小写。所以可能是大写小写字母的问题。

2)您可能已从图像属性中取消选中目标名称。这意味着您的图像不是您正在编译的项目目标的成员。要验证这一点,请右键单击 XCode 项目中的任何图像名称 --> 选择获取信息 --> 从文件信息对话框中选择目标选项卡 --> 验证目标名称附近复选框的状态。万一,它被选中/选中,那么就会出现一个奇怪的问题。但是如果它没有被选中/取消选中,这意味着图像没有被添加到编译后创建的包文件中。

第三种可能性是您可能没有添加您所指的图像。重新检查您的项目层次结构并查看所有资源是否存在。

于 2010-11-19T07:00:52.677 回答
0

NSURL *imageURL = [NSURL URLWithString:@"bundle://background.png"];

于 2010-11-24T20:25:55.927 回答
0

嗨使用以下代码

[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"background" ofType:@"png"]];

于 2010-11-19T08:45:34.497 回答