在iOS中编程加载图像

10
在我的iPad应用程序中,我正尝试通过编程方式加载图像文件。该文件不是我的项目的一部分,因此在XCode中没有引用它。在XCode的“组和文件”列中也没有该文件的条目。
这个图像必须在运行时加载,其名称从属性列表中读取。
我正在尝试像这样加载文件:
NSString* pathToImageFile = [[NSBundle mainBundle] pathForResource:@"MyImage" ofType:@"png" inDirectory:@"MyDirectory"];
UIImage* retVal = [UIImage imageWithContentsOfFile:pathToImageFile];

在这种情况下,mydirectory 存放在主要捆绑包中,如下所示:

MyAmazingApp.app/MyDirectory/MyImage.png

很不幸,图像无法加载。我不能将图像文件添加到我的项目中,因为它的名称在运行时是待确定的,无法预先知道。相反,文件名是从一个配置文件(属性列表)中在运行时读取的。

我做错了什么?非常感谢您的帮助。


如果MyImage.png不是通过XCode复制到MyAmazingApp.app中的,那么它是如何在其中的? - Stephen Furlani
Stephen:手动复制的。我只是想找出如何将内容与代码解耦。 - MatthiasC
1
我不确定您所说的将内容与代码解耦是什么意思。在iPhone上,文件要么在您的沙盒、主图库中,要么是通过XCode/app安装的。 - Stephen Furlani
1
@MattiasC,另外,仅仅因为你将其复制到“/build/”目录中,并不意味着它已安装在模拟器或设备上。 - Stephen Furlani
@Stephen Furlani:感谢您的帮助,Stephen。现在情况变得更加清晰了。以下是更多信息:我所谓的“将代码与内容解耦”的意思是,我正在编写一个应用程序,它应该能够播放通过Web服务或应用内购买提供的内容。它将不得不显示图像文件,这些文件的名称和边界在编码时是未知的,现在我只是尝试从Plist中读取文件名,然后加载相关文件。希望这样能让它更清楚。再次感谢您的评论和帮助。 - MatthiasC
1个回答

4

您可以使用NSFileManager获取一个目录或多个目录的内容。显然,您需要知道有关要加载的文件的某些信息,以便您可以识别它,但是您可以使用NSFileManager来帮助您生成应用程序包和应用程序文档目录中图像列表的示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接