4

在我的 iphone 应用程序中,我正在链接一个包含目标 c 文件和图像的静态库。是否可以从静态库中加载图像?我试过了

[UIImage imageNamed:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"png"]];

但显然图像不在主包中,它在静态库中,并且 NSBundle 类似乎只提供对主包和具有已知路径的包的访问。有没有办法从 iPhone 上的静态库中加载图像?

4

3 回答 3

12

最简单的方法是将图像存储在一个内联字符数组中:

const char imageData[] = { 0x00, 0x01, 0xFF, ... };

稍后当您需要它时:

UIImage *image = [UIImage imageWithData:[NSData dataWithBytesNoCopy:imageData length:sizeof(imageData) freeWhenDone:NO]];

您必须手动将图像的二进制数据(保​​存为 PNG 或 JPEG 后)转换为字符数组(或编写脚本来执行此操作)

于 2009-09-10T02:46:26.977 回答
1

目前尚不清楚“图像在静态库中是 [...]”是什么意思。静态库是普通文件(扩展名为 .a)并包含存档的目标文件。另一方面,捆绑是目录层次结构(包含可执行文件和其他资源)。

如果您链接静态库,则该库中的代码将直接包含在您的可执行文件中。没有文件被复制到应用程序包中,因此无法复制图像。

如果您的静态库中有图像文件,您可以通过在 Xcode 中将复制文件构建阶段添加到您的目标来简单地将其复制到您的应用程序包中。

于 2009-09-09T21:12:32.133 回答
0

您是否在静态库复制文件构建阶段使用绝对路径并将其指向客户端应用程序?我尝试了类似的方法,但仍然无法访问图像。

于 2010-03-16T19:17:17.387 回答