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

标签 objective-c ios cocoa

假设我有一个现有的 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/

相关文章:

ios - 单击按钮移动到 iOS 中的另一个 View Controller

ios - 快速单击 UITableView 中的编辑按钮的新行

ios - 是否可以使用 Testflight 和带有 crashlytics 的 crashreport 进行分发

objective-c - 仅通过模型 Controller (API 包装器)更新模型对象的最佳方法是什么

objective-c - 在 Interface Builder 中未选中 "Title Bar"的 NSPanel 不会出现

objective-c - 如何在 AppleScript-Cocoa 应用程序中使用 Objective C?

ios - 当年份小于 2000 时,initWithTimeIntervalSinceReferenceDate 返回 null

iphone - 时间跨度的智能格式化

ios - AVAssetWriterInput 当前不支持 AVVideoScalingModeFit - IOS 错误

ios - Inapp Purchase:我们可以在iTunes中添加一堆产品吗?