最近在做静态库的封装,发现图片文件的加载没问题,但是加载xib时总是报 .bundle> (not yet loaded),很是头疼。
先说怎么加载图片,一定要带上bundle的包名,要不然找不到文件。如下:
UIImage *key_img = [UIImage imageNamed:@"FFTKeyBoardBundle.bundle/ps.png"];
那么下面说下怎么解决xib问题。
1.不用xib,纯代码写。
2.第一个方法实在让我不爽,折腾了好几天,查了好些资料总算解决了。
如下操作:
1.先给你的静态库新建一个bundle,这个很关键。
2.这个时候你就创建了一个bundle,但这个bundle是OS X的。要做下修改。
3.设置bundle里面的资源。
4.到这里我们基本上是完成了。下面是最关键的地方。运行项目找到这个bundle.我是用下图的方法找的,不知道你们的路径写的是哪里,如果是默认的应该和我的一样。
说的简单点Xcode需要的bundle是编译后的bundle.
用的话就这么用就可以了:
NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"FFTKeyBoardBundle" withExtension:@"bundle"]];
self = [bundle loadNibNamed:@"PassWordKeyBoard" owner:nil options:nil].firstObject;
另:编译后的bundle文件如果有1x,和2X的图片我们可以看到变成了.tiff文件
当然如果你使用的界面是纯代码的就不用这么麻烦了,直接把资源文件夹后缀改成.bundle就可以了。
后话,bundle最好还是主工程引用,而不是直接拷贝到主工程中。
From: http://blog.csdn.net/sjl51060/article/details/43938911