美文网首页ios 组件化iOS控件
iOS Cocoapods关于s.resource_bundle

iOS Cocoapods关于s.resource_bundle

作者: 嗷大喵 | 来源:发表于2019-10-19 22:22 被阅读0次

    前言

    通过Cocoapods来写个自己的pod组件,如果组件需要图片、xib、storyboard等资源的时候有两种引入资源的方式分别是s.resource_bundles和s.resources

    前提

    Cocoapods版本

    pod --version
    1.8.3
    

    Prdfile里面用了

    use_frameworks!
    
    s.resources

    把资源文件都打包直接copy到Framework根目录下,这种方式pod里面的xib和storyboard可以直接引用pod里面的图片资源(xib中imageView只需设置name=0.jpg就可以显示)

      s.resources = [
        'B/Assets/**/*',
        'B/Classes/**/*.{storyboard,xib}'
      ]
    

    目录结构如下:


    目录结构

    编译后效果如下:


    编译后

    pod里面通过代码加载资源

    NSBundle *frameworkBundle = [NSBundle bundleForClass:[self class]];
    GoodView *view = [frameworkBundle loadNibNamed:@"GoodView" owner:self options:nil].lastObject;
    NSString *imagePath = [frameworkBundle pathForResource:@"0" ofType:@"jpg" inDirectory:nil];
    UIImage *image = [UIImage imageWithContentsOfFile:
                          imagePath];
    

    \color{red}{注意:}
    如果没有用use_frameworks!的话是不会生成对应的Framework的,则直接是把资源文件直接copy到app的根目录也就是MainBundle目录(会造成和主工程资源名称重复的情况)
    具体说明参考这篇博客
    https://blog.csdn.net/TuGeLe/article/details/85049392

    s.resource_bundles

    把资源文件都打包直接copy到Framework根目录下的xx.bundle里面,这种方式pod里面的xib和storyboard无法直接引用pod里面的图片资源

    s.resource_bundles = {
         'B' => ['B/Assets/*',
                 'B/Classes/**/*.{storyboard,xib}']
       }
    

    目录结构还是跟上面一样

    编译后效果如下:


    编译后效果 B.bundle目录

    pod里面通过代码加载资源

    NSBundle *frameworkBundle = [NSBundle bundleForClass:[self class]];
    GoodView *view = [frameworkBundle loadNibNamed:@"B.bundle/GoodView" owner:self options:nil].lastObject;
    
    NSString *imagePath = [frameworkBundle pathForResource:@"0" ofType:@"jpg" inDirectory:@"B.bundle"];
    UIImage *image = [UIImage imageWithContentsOfFile:
                          imagePath];
    

    这种方式在xcode的中打开xib里面图片是能正常显示的,但是项目运行起来以后会报错,图片无法加载成功

    Could not load the "0.jpg" image referenced from a nib in the bundle with identifier "xxxx
    

    相关文章

      网友评论

        本文标题:iOS Cocoapods关于s.resource_bundle

        本文链接:https://www.haomeiwen.com/subject/hvgnmctx.html