iOS 静态库加载xib异常

最近在做静态库的封装,发现图片文件的加载没问题,但是加载xib时总是报  .bundle> (not yet loaded),很是头疼。

先说怎么加载图片,一定要带上bundle的包名,要不然找不到文件。如下:

UIImage *key_img = [UIImage imageNamed:@"FFTKeyBoardBundle.bundle/ps.png"];


那么下面说下怎么解决xib问题。

1.不用xib,纯代码写。

2.第一个方法实在让我不爽,折腾了好几天,查了好些资料总算解决了。

如下操作:

1.先给你的静态库新建一个bundle,这个很关键。

iOS 静态库加载xib异常_第1张图片


2.这个时候你就创建了一个bundle,但这个bundle是OS X的。要做下修改。

iOS 静态库加载xib异常_第2张图片


3.设置bundle里面的资源。

iOS 静态库加载xib异常_第3张图片


4.到这里我们基本上是完成了。下面是最关键的地方。运行项目找到这个bundle.我是用下图的方法找的,不知道你们的路径写的是哪里,如果是默认的应该和我的一样。

iOS 静态库加载xib异常_第4张图片

iOS 静态库加载xib异常_第5张图片

iOS 静态库加载xib异常_第6张图片

说的简单点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文件


iOS 静态库加载xib异常_第7张图片


当然如果你使用的界面是纯代码的就不用这么麻烦了,直接把资源文件夹后缀改成.bundle就可以了。

后话,bundle最好还是主工程引用,而不是直接拷贝到主工程中。

2015年第一篇,希望能帮助到您。



你可能感兴趣的:(iOS 静态库加载xib异常)