使用静态库中的图像

时间:2010-11-03 00:53:58

标签: objective-c xcode image static-libraries

我正在尝试将包含图像的项目转换为静态库。

获取图像的代码如下:

[UIImage imageNamed:@"foo.png"]

当我将此库包含到另一个项目中时,图像不会加载。但是,如果我将图像复制到新项目中,那么它会加载。

我有什么方法可以让图片仅包含在图书馆中,我不需要将它们复制到我的项目中吗?

顺便说一下,我的标题搜索路径包含这些图像在库中的位置路径,如果这有任何区别的话。

3 个答案:

答案 0 :(得分:3)

只需将包含图像的包的名称添加到图像名称:

[UIImage imageNamed:@"Myframework.bundle/MyImage"

这也适用于Interface Builder,预览可能会被破坏,但图像将被正确加载。

如果使用CocoaPods(我建议使用),请确保为图片和笔尖使用resource_bundles选项。

您可以看到相关答案here

答案 1 :(得分:0)

静态库不能包含bundle资源。所以简单地链接.a文件是不够的。但是你应该能够交叉引用静态库xcodeproj。 Example

答案 2 :(得分:0)

与此类似的情况并编写了一个脚本,以便在编译时将文件复制到.app中。我们使用的修复程序与“静态库的非代码资源”部分on this web page中描述了类似的修复程序。这有效,但可能会导致一些代码签名错误。另一种选择是为资源described on this web page创建第二个.bundle目标,尽管由于某种原因我无法获得实际构建的包。我目前正在编写一个脚本,在编译时将资源复制到一个包中,并将任何.xib文件编译为.nibs,这也是一个可以看到的解决方案。