无法在捆绑上的xcassets中加载图像

时间:2014-10-02 10:30:40

标签: ios static-libraries nsbundle xcasset

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

我跟踪了许多指南并在此网站上搜索了解决方案。 最流行的解决方案是插入以下代码:

[UIImage imageNamed:@"MyBundle.bundle/imageName"] 

但似乎对我不起作用

任何想法?

3 个答案:

答案 0 :(得分:7)

运行同样的问题。看起来在1参数imageNamed方法中,XCAssets的内联包支持被破坏了。虽然使用imageNamed有一个解决方法: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以按照apple docs传递主屏幕特征(虽然如果有人知道请注释,我不会明白它的意思!)。

答案 1 :(得分:2)

我们的图片放在Images.xcassets中,我们遇到了在IBDesignable中加载图片的问题。以下代码完成了“界面”构建器和应用程序中预览的工作:

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

答案 2 :(得分:2)

对于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
}