I need to include images in a static library. I created a bundle and inserted in my images, the problem is that it seems to work if I include the images directly in the bundle, but stops working if I put in a xcassets file.

I followed many guides and searched for a solution on this site. The most popular solution is to insert this line of code:

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

but it seems not work for me

any ideas?

asked Oct 2 '14 at 10:30
Serluca

1,5851920
 
    
   
facing same issue, Did you able to fix this? – BaSha Feb 26 '15 at 7:07
    
   
@BaSha it is possible using iOs 8 with this method: + (UIImage *)imageNamed:(NSString *)name inBundle:(NSBundle *)bundle compatibleWithTraitCollection:(UITraitCollection *)traitCollection; With iOs 7 the best solution is remove the images from the xcassets file – Serluca Feb 26 '15 at 9:38 
    
   
thanks, though I had to add images separately in bundle as iOS 7 support was required – BaSha Feb 26 '15 at 9:44
2  
   
@BaSha I created this category gist.github.com/serluca/e4f6a47ffbc19fccc63e . In this way, you can use after: [NSBundle imageNamed:@"imageName"]; – Serluca Feb 26 '15 at 10:20

4 Answers

There are two ways to solve this,

If your app is still supporting iOs 7, you can use this category:https://gist.github.com/serluca/e4f6a47ffbc19fccc63e

Otherwise, starting from iOs 8 Apple added a way to do this using: + imageNamed:inBundle:compatibleWithTraitCollection: defined here

answered May 1 '15 at 13:13
Serluca

1,5851920
 
    
   
know of any way to refer to this inside Interface Builder? – jowie Dec 3 '15 at 11:09
1  
   
@jowie did you try with this stackoverflow.com/a/7733614/1728552 – Serluca Dec 3 '15 at 12:38
    
   
I did but that refers to a png, rather than an .xcassets identifier. Having said that I didn't realise but my problem goes a little deeper because it's not importing assets from my custom framework. I will try it again after (hopefully) I out out my other issue. Thanks! – jowie Dec 3 '15 at 15:05 
    
   
imageNamed:inBundle:compatibleWithTraitCollection: works with a PNG embedded in the bundle flat, but once you put it in the .xcassets folder, I cannot find a way of referring to it anymore... – jowie Dec 3 '15 at 15:35

Running the same problem. Looks like inline bundle support is broken for XCAssets in the 1-parameter imageNamed method. There's a workaround though using imageNamed:inBundle:compatibleWithTraitCollection: Be careful, this is iOS8 only !!

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];

NOTE : traitCollection is set to nil to pass the main screen traits as per apple docs (i don't quite get what it means though, if anyone knows please comment!).

answered Oct 22 '14 at 13:47
 
    
   
any good way to do it in iOS7? – user1010819 Dec 20 '14 at 12:56
2  
   
So I've been having the same issue, looks like the scenario is that xcode compile xcassets directly to a binary file (.car) and copies into main bundle, which mean xcassets cannot be contained in a bundle resource. devforums.apple.com/message/968859#968859 – Adil Soomro Feb 6 '15 at 11:49

Our images are placed in Images.xcassets and we had a problem with loading images in an IBDesignable. The following code did the job for the preview in Interface builder and the app as well:

NSBundle* bundle = [NSBundle bundleForClass:[self class]];
UIImage* image = [UIImage imageNamed:@"image.jpg" inBundle:bundle compatibleWithTraitCollection:nil];
answered May 1 '15 at 11:30
 
    
   
As I said this method is available on starting from iOs 8. If you use iOs 7 you can use my category insteadgist.github.com/serluca/e4f6a47ffbc19fccc63e – Serluca May 1 '15 at 13:09

For 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
}

Impossible to load an image in xcassets on bundle的更多相关文章

  1. 解决React Native unable to load script from assets index.android.bundle on windows

    React Native运行的时候,经常碰到React Native unable to load script from assets index.android.bundle on windows ...

  2. React Native: unable to load scripts from assets 'index.android.bundle' on real device

    问题:重新建了一个项目后,运行react-native run-android报: unable to load scripts from assets 'index.android.bundle' ...

  3. 项目初始化以后出现:Unable to load script from assets 'index.android.bundle

    Mac中真机测试React Native project时出现Unable to load script from assets 'index.android.bundle' 2018年01月21日 ...

  4. react native中Unable to load script from assets 'index.android.bundle'解决方案

    刚刚朋友问我,说是创建好一个项目,运行后报错:Unable to load script from assets 'index.android.bundle',以前好好的没出现这种现象,于是我找到一个 ...

  5. unable to load script from assets 'index.android bundle'

    在Android手机上运行React-native项目时 报错:unable to load script from assets 'index.android bundle'  ,make sure ...

  6. Unable to load script from assets 'index.android.bundle'.make sure you bundle is packaged correctly

    解决此问题 以下方法每次都需要执行命令2才能更新 1.创建assets目录 mkdir android/app/src/main/assets 2.执行命令 react-native bundle - ...

  7. Unable to load script from assets 'index.android.bundle' 出错?

    野路子太多,坑人真的!F**k 言归正传,当你运行 react native 程序的时候出现这个错误 ,如果您使用Windows,请按以下方式运行命令,或者如果出现错误“无法找到条目文件index.a ...

  8. Unable to load script from assets 'index.android.bundle'.Make sure your bundle is packaged correctly or you're running a packager server

    curl -k 'http://localhost:8081/index.android.bundle?platform=android' > android/app/src/main/asse ...

  9. MemoryModule -- load a DLL completely from memory

    https://github.com/fancycode/MemoryModule MemoryModule is a library that can be used to load a DLL c ...

随机推荐

  1. SAP SD 销售凭证如何设置字段必填

    在实际业务中,我们经常遇到需要设置某些字段是必输的.那么在SAP中创建销售订单时如何控制必填字段呢?请看操作手册 第一步:设置屏幕增强 T-CODE:shd0 上截图 1----输入需要控制的事物代码 ...

  2. yii2 框架的 save() 方法 执行模式条件。

     save() 方法会调用 insert() 和 update() 中的一个, 用哪个取决于当前 AR 对象是不是新对象(在函数内部,他会检查 yii\db\ActiveRecord::isNewRe ...

  3. (转)TortoiseSVN客户端重新设置用户名和密码

    在第一次使用TortoiseSVN从服务器CheckOut的时候,会要求输入用户名和密码,这时输入框下面有个选项是保存认证信息,如果选了这个选项,那么以后就不用每次都输入一遍用户名密码了. 不过,如果 ...

  4. My97DatePickerBeta 日历插件

    <!doctype html><html lang="en"><head> <meta charset="UTF-8" ...

  5. bzoj 3611: [Heoi2014]大工程

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #d ...

  6. sass安装记录

    之前曾经安装过一次sass,不过可惜没使用,现在换了电脑重新安装,又上网找了些资料,终于安装成功,现在就当做个记录方便下次安装. 首先 到官网下载个最新版的ruby :http://rubyinsta ...

  7. JavaScript 开发的45个经典技巧

    JavaScript是一个绝冠全球的编程语言,可用于Web开发.移动应用开发(PhoneGap.Appcelerator).服务器端开发(Node.js和Wakanda)等等.JavaScript还是 ...

  8. Unhandled exception at 0x........ in XXXX.exe: 0xC0000005:错误

    对于C++初学者或粗心者,很容易犯如下图所示错误:     那么该错误是由什么造成的呢?   答案无疑只有一个,即:读取了本该没有的值或者地址.   那么如何解决呢?   第一件事,检查下你传入的参数 ...

  9. TCP、UDP、RTP(RTCP)异同与区别

    OSI七层模型OSI 中的层            功能                                                        TCP/IP协议族 应 用层   ...

  10. 工作偶遇小bug

    1.下面这个在,调试一个单片机定时器是遇到的,整了一上午才找到,晕! 编译器是不认为它是错误的,所以,就你怎么运行都不是你想要结果。 2.使用pic单片机过程中,使用AD口时,相应端口的方向必须设为输 ...