如何在iOS/Xcode 4中将图片添加到库中

6

我有一个Xcode工作区,其中包含几个项目,比如Foo和Baz,它们都依赖于一些共同的代码,这恰好是RCSwitch开关按钮代码(如果有人感兴趣,可以在此处找到)。当Foo或Baz正在运行时,RCSwitch会加载一些图像文件。它们使用UIImage imageNamed:消息进行加载,如下所示:

UIImage *knobTmpImage = [[[UIImage imageNamed:@"btn_slider_thumb.png"] retain] autorelease];

我的理解是,为了使此功能正常工作,图像需要成为应用程序捆绑包的一部分。我的问题是如何从我的库中将它们导入其中?我尝试将"复制捆绑资源"构建阶段添加到我的库项目中,然后将所有图像添加到其中,但没有任何效果。这些图像在运行时无法找到。
然后我尝试将这些图像添加到Foo和Baz本身的"复制捆绑资源"构建阶段;必须选择"添加其他",因为即将出现的对话框不会列出当前项目以外的任何资源。这种方法实际上是可行的,但看起来很奇怪。Foo和Baz都不应该知道库的内部情况。如果我想将库发送给外部客户怎么办?
还有其他的方法吗?在libXXX.a文件中是否可能有图像或其他资源?

你不能将资源文件与静态库一起包含。你的问题似乎是以下问题:https://dev59.com/FXRB5IYBdhLWcg3wJUeu <br/>你可以应用解决方法来解决你想要的问题,但我建议你创建一个框架而不是静态库。以下文章可能会对你有所帮助。 <br/> http://simplyitinc.blogspot.com/2011/04/creating-static-framework-in-xcode-4.html <br/> http://www.cocoanetics.com/2010/05/making-your-own-iphone-frameworks-in-xcode/ - Learner
1个回答

3
我为此所做的是创建一个 bundle 文件并将其包含在主应用程序项目中。如果在工作区中使用子项目/同级项目,则可以以这种方式添加此 bundle,以便如果编辑库项目以添加另一个图像,则会重新构建,这意味着主应用程序项目会捕获更改。
我在这里写了一篇教程 - http://www.galloway.me.uk/tutorials/ios-library-with-resources/ 你感兴趣的部分是关于 UIImage 的分类,我用它来获取库 bundle 中的图像。因此,从库的代码中,我使用分类中添加的方法从正确的 bundle 中获取图像。

1
非常棒的文章(感谢,解决了我在一个复杂项目中遇到的问题!),但如果您能够将关键点复制/粘贴到这里,那么信息就都在SO.com上了,这会更好得多。另外...很遗憾您的博客没有评论框,因为我想分享一个两行的补充说明,让您可以在库内编写代码,该代码可以在内部和外部运行(尝试mainbundle;如果返回的路径为空,则尝试硬编码导出的bundle--这样,您甚至可以通过在主应用程序中包含自定义版本来“覆盖”资源)。 - Adam
@Adam - 是的,我可能应该复制并粘贴主要内容 - 我会尽力去做。至于评论 - 应该在底部有Facebook评论插件 - 你没有看到吗? - mattjgalloway
我看到了一个“赞”按钮,但没有评论表单。如果需要使用Facebook进行评论,那可能就是问题所在——我不会为了在博客上发帖而注册Facebook账号,抱歉 :) - Adam
@Adam - 哈哈,好的,说得对 :-)。我使用Facebook评论是因为它更方便。虽然我也可以使用Disqus,但我想使用Facebook。不过还是谢谢你的反馈! - mattjgalloway

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