2013-02-12 153 views
0

我有一个静态库,我需要一些图形资源作为图像。 在我的课堂我会以这种方式添加图像:iOS静态库与图像资源

[UIImage imageNamed:@"myImage.png"] 

,但它不工作... 我该怎么办呢?

回答

1

我找到了解决办法..

我探索了包目录(编译)和我已经注意到,我的图像(.png)他们都在iestensione .tiff

为了避免这一点,我设置关键HIDPI_COMBINE_IMAGES我捆打造专业化设置为NO

..所以通过e1985

+1

谢谢。如果你想知道,实际的标志叫做COMBINE_HIDPI_IMAGES。 – 2014-10-02 11:01:49

1

除静态库之外,您不能提供任何代码。这是因为.a文件是目标文件的简单归档文件,在支持多CPU架构的Mac/iOS下增加了功能。

你唯一的选择是建立一个框架,它可以提供的代码以及其他资源。

+0

好吧,我已经创建了一个包在我的图书馆我的资源,我该如何使用这些资源:

然后从外部的项目,我只是做这个发现在框架捆绑的文件吗?我遵循这个教程http://www.galloway.me.uk/tutorials/ios-library-with-resources/ – Safari 2013-02-12 11:56:33

+0

@GgSalent对我来说看起来像是一种黑客攻击,我认为资源真的是图书馆;他们可能位于相同的目录中,但这是所有库和包的共享。我不知道如何使用捆绑中的资源。 – trojanfoe 2013-02-12 12:01:30

1

在Xcode中,如果您链​​接静态库,从库中的代码被直接计入您的可执行文件。没有文件被复制到应用程序包,因此无法复制图像。

如果你有你的静态库中的图片文件,你可以简单地把它添加一个文件拷贝建造阶段Xcode中的目标复制到您的应用程序包。

2

一旦你的包,你可以访问的资源,你必须有这样的:

NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"YourBundle" ofType:@"bundle"]; 
NSString *imagePath = [[NSBundle bundleWithPath:bundlePath] pathForResource:@"yourImage" ofType:@"png"]; 
UIImage *image= [[UIImage alloc] initWithContentsOfFile:imagePath]; 
+0

是的..但图像是零.. 我添加了我的图像(例如myImage.png在我的包资源上),我测试了你的方式......但图像obj是零! :( – Safari 2013-02-12 17:23:59

0

的建议做一个框架的目标,而不是静态库,我可以恢复我的照片。 确保您的框架的构建阶段中存在“复制包资源”。在那里添加你的资源文件。

NSArray<NSBundle *> * bundles = [NSBundle allFrameworks]; 
NSString * filePath; 
for (int i = 0; i < bundles.count; i++) { 

    filePath = [[bundles objectAtIndex:i] pathForResource:@"picture" ofType:@"png"]; 
    if (filePath != nil) break; // found 
}