假设我有一个现有的 iOS 或 Mac 框架,我们将其称为 Test.framework。该框架已成功编译和链接(对 iOS 部分的 i386 和 armv6/7 archs 进行了 lipo 操作)并且运行良好。
现在我想给它添加一张图片,我们称它为“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"]
但没有任何结果总是返回一个 nil
对象。
有什么想法吗?
编辑
经过进一步调查,我似乎无法在 iOS 上完成我想要完成的任务。原因是最终的应用程序包(.app)不会复制为 Mac OS 编译的应用程序所在的私有(private)框架。
这在 iOS Bundle Structures documentation 中有进一步的详细说明。 .
感谢 Rob Keniger 和 xuzhe 的帮助。我会把答案归功于 xuzhe,因为它实际上是对我原来的问题最合适的答案(尽管 Rob 的评论让我更深入地研究了这个问题)
最佳答案
“imageNamed:”方法仅适用于您的 App bundle 中的图像。你应该使用
[[UIImage alloc] initWithContentsOfFile:path];
相反。
关于路径,因为我不确定“Test.Framework”是否在你的应用程序包中,所以我无法给你一个示例代码。但如果它剂量,下面的代码应该工作:
NSString* path = [Nsstring stringWithFormat:@"%@/Test.framework/Resources/test.png", [[NSBundle mainBundle] bundlePath]];
关于objective-c - 将图像(或其他资源)添加到 Mac 或 iOS 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7181116/