我有一个静态库,我需要一些图形资源作为图像。 在我的课堂我会以这种方式添加图像:iOS静态库与图像资源
[UIImage imageNamed:@"myImage.png"]
,但它不工作... 我该怎么办呢?
我有一个静态库,我需要一些图形资源作为图像。 在我的课堂我会以这种方式添加图像:iOS静态库与图像资源
[UIImage imageNamed:@"myImage.png"]
,但它不工作... 我该怎么办呢?
我找到了解决办法..
我探索了包目录(编译)和我已经注意到,我的图像(.png
)他们都在iestensione .tiff
为了避免这一点,我设置关键HIDPI_COMBINE_IMAGES
我捆打造专业化设置为NO
..所以通过e1985
除静态库之外,您不能提供任何代码。这是因为.a
文件是目标文件的简单归档文件,在支持多CPU架构的Mac/iOS下增加了功能。
你唯一的选择是建立一个框架,它可以提供的代码以及其他资源。
在Xcode中,如果您链接静态库,从库中的代码被直接计入您的可执行文件。没有文件被复制到应用程序包,因此无法复制图像。
如果你有你的静态库中的图片文件,你可以简单地把它添加一个文件拷贝建造阶段Xcode中的目标复制到您的应用程序包。
一旦你的包,你可以访问的资源,你必须有这样的:
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"YourBundle" ofType:@"bundle"];
NSString *imagePath = [[NSBundle bundleWithPath:bundlePath] pathForResource:@"yourImage" ofType:@"png"];
UIImage *image= [[UIImage alloc] initWithContentsOfFile:imagePath];
是的..但图像是零.. 我添加了我的图像(例如myImage.png在我的包资源上),我测试了你的方式......但图像obj是零! :( – Safari 2013-02-12 17:23:59
的建议做一个框架的目标,而不是静态库,我可以恢复我的照片。 确保您的框架的构建阶段中存在“复制包资源”。在那里添加你的资源文件。
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
}
谢谢。如果你想知道,实际的标志叫做COMBINE_HIDPI_IMAGES。 – 2014-10-02 11:01:49