objective-c – 将图像(或其他资源)添加到Mac或iOS Framework

假设我有一个现有的iOS或Mac框架,我们称之为Test.framework.这个框架已成功编译和链接(为iOS部分提供了i386和armv6 / 7 archs的一个技巧)并且工作得非常好.

现在我想添加一个图像让我们称之为’test.png’.我已将其复制到我的框架的Resources文件夹中,以便我具有以下结构:

ls Test.framework

- Headers -> Versions/Current/Headers
- Resources -> Versions/Current/Resources
- Test -> Versions/Current/Test
- Versions 

ls Test.framework/Resources

- Info.plist
- test.png

然而,当我使用我的框架创建项目时,我无法访问该图像.

我试过了:

[UIImage imageNamed:@"test.png"]
[UIImage imageNamed:@"Test.framework/test.png"]
[UIImage imageNamed:@"Test.framework/Resources/test.png"]

但没有任何结果总能给我一个零的对象.

有任何想法吗 ?

编辑

经过进一步的调查后,似乎我想要实现的目标无法在iOS上完成.原因是最终的应用程序包(.app)不会复制为Mac OS编译的应用程序所在的私有框架.

这在iOS Bundle Structures documentation中进一步详述.

感谢Rob Keniger和xuzhe对他们的赞赏.我会赞扬xuzhe的答案,因为它实际上是我原来问题的最合适的答案(尽管Rob评论让我深入研究了这个问题)

解决方法

“imageNamed:”方法仅适用于App捆绑包中的图像.你应该用
[[UIImage alloc] initWithContentsOfFile:path];

代替.

关于路径,因为我不确定“Test.Framework”是否在你的App包中,我无法给你一个示例代码.但如果它剂量,下面的代码应该工作:

Nsstring* path = [Nsstring stringWithFormat:@"%@/Test.framework/Resources/test.png",[[NSBundle mainBundle] bundlePath]];

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...