创建私有库所遇到的问题

最近做私有库碰到的问题如下:

1、imageWithContentsOfFile:参数要不要加@2x @3x

图片(带@2x@3x)在bundle文件内,加载图片如下写加载不出数据:

/// 加载工具类内部toolClassName
+ (NSBundle *)bundle {
    static NSBundle *bundle = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
       bundle = [NSBundle bundleWithPath:[[NSBundle bundleForClass:[self class]] pathForResource:@"bundle文件名" ofType:@"bundle"]];
    });
    return bundle;
}

+ (nullable UIImage *)imageNamed:(NSString *)name {
    if ( 0 == name.length )
        return nil;
    NSString *path = [self.bundle pathForResource:name ofType:@"png"];
    UIImage *image = [UIImage imageWithContentsOfFile:path];
    image = [UIImage imageWithCGImage:image.CGImage scale:3.0 orientation:image.imageOrientation];
    return image;
}

调用:

[toolClassName imageNamed:@"图片名不加@2x@3x"];

结果:加载不出图片数据。
修正:

+ (nullable UIImage *)imageNamed:(NSString *)name {
    if ( 0 == name.length )
        return nil;
    // @"/%@.png" == @"/%@"结果一样
    NSString *pngPath = [[self.bundle resourcePath] stringByAppendingString:[NSString stringWithFormat:@"/%@.png", name]];
    UIImage *image = [UIImage imageWithContentsOfFile:pngPath];
    
    image = [UIImage imageWithCGImage:image.CGImage scale:3.0 orientation:image.imageOrientation];
    return image;
}

成功!

2、私有库A依赖另一个私有库B的时候,当库B文件结构发生改变的时候(比如图片bundle的加入),对A进行pod install之后,会发现A中的B并未发生相应的变化,解决办法:

重新引入索引库即可:
source 'http://xx.xxx.cn/xxx/xxx.git'  # B库

3、报错信息:ERROR | [iOS] unknown: Encountered an unknown error (Unable to find a specification for 'xxx' depended upon bg 'xxxx')

pod lib lint xxx --use-libraries
pod spec lint xxx --use-libraries
pod repo push 本地Spec文件 xxx.podspec xxx --use-libraries

当执行以上代码的时候报错如下所示:

error

解决办法:
在以上后面加上 --sources='私有库1索引地址, 私有库2索引地址,https://github.com/CocoaPods/Specs,等等) --use-libraries

如下:
pod lib lint --sources='http://xxx/zkhy-ios/xxxSpec.git, https://github.com/CocoaPods/Specs, http://x.cn/zkhy-ios/x.git' --use-libraries --allow-warnings

'

你可能感兴趣的:(创建私有库所遇到的问题)