远程私有库的资源依赖和图片使用
2017-06-23 本文已影响198人
MagicCare
资源依赖#
我们在使用远程私有库的时候势必会涉及到资源的加载,其中不可回避的就是我们的xib和图片,那么我们接下来我们一边通过将主骨架拆成我们的组件一边来讲解怎么处理我们的xib文件和我们的图片
-
首先来创建一个模板库
创建模板库.png -
创建出来的主骨架的模板库
创建主骨架库.png -
然后将主骨架的核心代码拖到Classes文件夹下面
拖入核心代码.png -
使用pod install将主骨架库安装到测试工程中
安装主骨架库到测试工程.png -
按照我们的宿主工程的代码,我们将delegate里面的内容复制过去,并且编译一下但是我们发现提示不存在,我们进去看看
TZBarController实现文件.png -
原来是缺了基础组件的布局文件
-
那么我们给描述文件中添加依赖
-
pod install安装居然出现问题了
-
添加源
-
将测试控制器也集成进来看看最终的效果吧
-
编译过程中报错,我们来看看报错的原因把
-
原因:导入的组件代码有xib,但是找不到xib运行,因为xib属于资源,不能当成代码导入,也就是需要用resource_bundles导入。
- 运行:找不到xib,因为xib被存放到资源的bundle中,因此需要添加前缀
//获取当前bundle名称
NSString *bundleName = currentBundle.infoDictionary[@"CFBundleName"];
bundleName = [NSString stringWithFormat:@"%@.bundle",bundleName];
//xib名称需要拼接Bundle名称,否则找不到xib
NSString *nibName = [NSString stringWithFormat:@"%@/TZMiddleView",bundleName];
TZMiddleView *middleView = [[currentBundle loadNibNamed:nibName owner:nil options:nil] firstObject];
- 友情提醒:如果组件中使用了资源,一定要把组件生成framework,不能生成.a,否则资源拿不到.
podfile文件中添加描述use_frameworks!
-
最后我们看看集成完成我们测试工程之后项目运行的样子
我们发现已经和我们宿主工程成的样子相差无几了,但是由于我们的资源都在宿主工程而没有在我们的组件当中,所以所有的图片都无法加载,我们其实应该将我们的图片资源都加载到我们的组件当中,否则以后别人使用我们的组件还得单独下载图片,这违背了我们的初衷。