Ios 无法在捆绑包上的xcassets中加载映像

Ios 无法在捆绑包上的xcassets中加载映像,ios,static-libraries,nsbundle,xcasset,Ios,Static Libraries,Nsbundle,Xcasset,我需要在静态库中包含图像。 我创建了一个bundle并将其插入到我的图像中,问题是如果我将图像直接包含在bundle中,它似乎可以工作,但如果我放入xcassets文件,它将停止工作 我遵循许多指南,在这个网站上寻找解决方案。 最流行的解决方案是插入以下代码行: [UIImage imageNamed:@"MyBundle.bundle/imageName"] 但这似乎对我不起作用 有什么想法吗?运行相同的问题。在1参数ImageName方法中,XCAssets的内联捆绑包支持似乎已中断。使

我需要在静态库中包含图像。 我创建了一个bundle并将其插入到我的图像中,问题是如果我将图像直接包含在bundle中,它似乎可以工作,但如果我放入xcassets文件,它将停止工作

我遵循许多指南,在这个网站上寻找解决方案。 最流行的解决方案是插入以下代码行:

[UIImage imageNamed:@"MyBundle.bundle/imageName"] 
但这似乎对我不起作用


有什么想法吗?

运行相同的问题。在1参数ImageName方法中,XCAssets的内联捆绑包支持似乎已中断。使用ImageName:inBundle:compatibleWithTraitCollection有一个解决方法:小心,这只是iOS8

NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"static_lib_bundle_name" ofType:@"bundle"]];
UIImage *image  = [UIImage imageNamed:@"image_in_the_xcassets_you_want" inBundle:bundle compatibleWithTraitCollection:nil];

注意:traitCollection设置为nil,以根据传递主屏幕特征(我不太明白它的意思,如果有人知道,请发表评论!)。

我们的图像放在images.xcsets中,我们在IBDesignable中加载图像时遇到问题。以下代码完成了Interface builder和应用程序中预览的工作:

NSBundle* bundle = [NSBundle bundleForClass:[self class]];
UIImage* image = [UIImage imageNamed:@"image.jpg" inBundle:bundle compatibleWithTraitCollection:nil];

有两种方法可以解决这个问题

如果您的应用程序仍支持iOs 7,则可以使用以下类别:

否则,从iOs 8开始,Apple添加了一种方法,使用:
+imagename:inBundle:compatibleWithTraitCollection:
为Swift 2.1定义的:

let bundle = pathToBundle // define for your app or framework
if let image = UIImage(named: "drop_arrow", inBundle: bundle, compatibleWithTraitCollection: nil) {
    // process image
}

所以我也遇到了同样的问题,看起来场景是xcode将xcassets直接编译成二进制文件(.car)并复制到主捆绑包中,这意味着xcassets不能包含在捆绑包资源中。面对同样的问题,您是否能够解决此问题?@BaSha使用iOs 8时,可以使用以下方法:+(UIImage*)imageNamed:(NSString*)name inBundle:(NSBundle*)bundle compatibleWithTraitCollection:(UITraitCollection*)traitCollection;对于iOs 7,最好的解决方案是从xcassets文件中删除图像。谢谢,尽管我不得不在捆绑包中单独添加图像,因为iOs 7支持非常有限required@BaSha我创建了这个类别。这样,您就可以在:[NSBundle imageName:@“imageName]”之后使用;正如我所说,从iOs 8开始就可以使用这种方法。如果您使用iOs 7,您可以使用我的类别,而不知道如何在界面生成器中引用此内容?我是这样做的,但它引用的是png,而不是.xcassets标识符。话虽如此,我并没有意识到这一点,但我的问题更深了一层,因为它并没有从我的定制框架中导入资产。我会在(希望)解决我的另一个问题后再试一次。谢谢ImageName:inBundle:compatibleWithTraitCollection:与嵌入在捆绑包平面中的PNG一起工作,但一旦您将其放入.xcassets文件夹中,我就找不到再引用它的方法了。。。