假设我有一个现有的iOS或Mac框架,我们将其称为Test.framework。这个框架已经成功地编译和链接了(一个技巧是为iOS部分的i386和armv6/7构建的),并且工作得很好。将图像(或其他资源)添加到Mac或iOS框架
现在我想为它添加一个图像,我们称之为'test.png
'。我已经复制到我的框架的资源文件夹,使我有以下结构:
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编译的应用程序所在的私有框架。
这在iOS Bundle Structures documentation中进一步详述。
感谢Rob Keniger和xuzhe的感谢帮助。我将信誉xuzhe的答案,因为它实际上是我最初的问题最恰当的答案(即使罗布评论让我深入挖掘该问题)
说''imageNamed:“方法仅适用于您的应用程序包中的图像”并非完全正确。如果我添加一个包(比如test.bundle)到我的项目中,并且这个包中包含test.png,那么[UIImage imageNamed:@“test/test.png”]将很好地工作。 – apouche
然而,你的解决方案很有趣,但我没有捆绑到我的应用程序中的框架(它可以安装在commond框架文件夹中) – apouche
@apouche如果你正在应用程序包中添加一个包,然后调用'[UIImage imageNamed: @“test.bundle/test.png”];'没问题,因为test.bundle也在主包中。如果不是,我怀疑“imageNamed:”可以找到它。 – xuzhe