使用静态库中的图像
我试图将具有图像的项目转换为静态库。使用静态库中的图像
一个获取图像的代码如下:
[UIImage imageNamed:@"foo.png"]
当我包括这个库到另一个项目,图像不会加载。但是,如果我将图像复制到新项目中,则会加载。
有没有什么办法可以让我的图片只包含在图书馆中,而且我不必将它们复制到我的项目中?
顺便说一句,我的标题搜索路径包含这些图像在库中的位置的路径,如果这有什么不同。
有类似的情况,并编写了一个脚本来将文件复制到.app在编译时。在“静态库的非代码资产”部分on this web page中描述了与我们使用的类似的修复方法。这有效,但可能会导致一些代码签名错误。另一种选择是为资源described on this web page创建第二个.bundle目标,但由于某些原因,我无法获得该包实际构建。我目前正在编写一个脚本来在编译时将资源复制到一个包中,并将任何.xib文件编译为.nibs,这也是您可以查看的一种可能的解决方案。
只是在前面加上一个包含图像的图像名包的名称:
[UIImage imageNamed:@"Myframework.bundle/MyImage"
这也适用于Interface Builder中,预览可能被打破,但图像将被正确加载。
如果使用CocoaPods(我会推荐),请确保为图像和笔尖使用resource_bundles
选项。
您可以看到相关答案here。
您对此问题的回答是正确的。但我想问这个问题:http://stackoverflow.com/questions/22869670/how-can-i-load-an-image-from-assets-car-compiled-version-of-xcassets-within-an – 2014-04-04 17:58:27
它不适用于我。我正试图从静态库中添加的包中加载图像。无论如何,我访问捆绑中的xcassets? – user1010819 2014-12-23 07:56:07
但是一个图像可以被Base64编码并被硬编码到一个静态库中。 – uchuugaka 2014-03-31 01:33:51
@uchuugaka - 无法使用[UIImage imageNamed:]加载嵌入式base64图像。据我所知,[UIImage imageNamed:]调用查找预编译的Bundle中的图像。而一个静态库不能包含Bundles。 – tidwall 2014-03-31 19:32:42