我正在尝试将包含图像的项目转换为静态库。
获取图像的代码如下:
[UIImage imageNamed:@"foo.png"]
当我将此库包含到另一个项目中时,图像不会加载。但是,如果我将图像复制到新项目中,那么它会加载。
我有什么方法可以让图片仅包含在图书馆中,我不需要将它们复制到我的项目中吗?
顺便说一下,我的标题搜索路径包含这些图像在库中的位置路径,如果这有任何区别的话。
答案 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,这也是一个可以看到的解决方案。