美文网首页iOS 坑的集中营iOS Developer程序猿阵线联盟-汇总各类技术干货
使用CocoaPods集成的远程私有公有库如何使用图片资源

使用CocoaPods集成的远程私有公有库如何使用图片资源

作者: 踩坑小分队 | 来源:发表于2017-05-25 10:36 被阅读81次

    在这里默认你已经了解集成远程私有或者共有库了,如果不是很清楚,建议先看一下
    <a href="http://www.jianshu.com/p/388ec8b46ced">教你一步步用CocoaPods创建远程公有库</a>
    <a href="http://www.jianshu.com/p/db64c9a543a4">教你一步步用CocoaPods创建远程私有库</a>

    1、首先是先把图片资源添加到封装的库中
    1.1、


    image.png

    1.2、修改.podSpec文件指定我们资源文件的路径


    image.png
    注意一下,最后一定是写*
    因为我们的图片资源不一定只有png有可能还有jpg格式的。

    2、加载图片的写法
    我们一般加载图片的写法有两种

    UIImage *image = [UIImage imageNamed:@"图片"];
    
    NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"图片" ofType:@"png"];
    UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
    

    但是发现这两种写法,都不能加载我们的私有库资源中的图片,上面的两种写法,倒是可以加载我们主项目中项目中的图片和Images.xcassets中的图片。

    上面的两种写法,实际上是去加载的哪里的图片呢?


    image.png
    UIImage *image = [UIImage imageNamed:@"图片"];
    

    这句话默认加载的是下面这两种图片,一种是我们直接拖到项目中的图片,一种是我们拖到Images.xcassets

    image.png
    NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"图片" ofType:@"png"];
    UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
    

    这句话加载的则是我们直接拖到主项目中的图片。

    我们添加到pod库中的图片去哪里了?


    image.png image.png

    仔细看,我们的图片的位置是在一个单独的bundle中的。
    所以上面的两种加载图片的方式肯定是不行的

    加载封装到pod库中图片的正确姿势是这样的:

       // 注意图片名称的格式,必须写全 @2x 或者 @3x  后缀名都得写
        NSString *imageName = @"compose_photograph@2x.png";
        // 获取当前的bundle,self只是在当前pod库中的一个类,也可以随意写一个其他的类
        NSBundle *currentBundle = [NSBundle bundleForClass:[self class]];
        // 获取当前bundle的名称
        NSString *currentBundleName = currentBundle.infoDictionary[@"CFBundleName"];
        // 获取图片的路径
        NSString *imagePath = [currentBundle pathForResource:imageName ofType:nil inDirectory:[NSString stringWithFormat:@"%@.bundle",currentBundleName]];
        // 获取图片
        UIImage *imageFile = [UIImage imageWithContentsOfFile:imagePath];
    

    当然了方法不是唯一的,最快捷的参考办法是参考其他的封装的pod是怎么加载图片的

    image.png

    当然了,也有这种做法,就是直接把所有的图片都存储在Assets.xcassets,然后远程私有库调用图片的时候和在主项目写法一致就可以了,但是这样的封装性貌似差点。不过没有最牛逼,只有最合适。

    如有失误请各位路过大神即时指点,或有更好的做法,也请指点一二。在下不甚感激。

    相关文章

      网友评论

      • 愚人船ios:只能写@2x 和@3x 中的一个吗?如果要适配还要单独判断吗?

      本文标题:使用CocoaPods集成的远程私有公有库如何使用图片资源

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