UIImageView添加SVG格式的图片

╄→尐↘猪︶ㄣ 提交于 2019-12-08 00:45:16

pod 导入

pod 'SVGKit'

pod 'CocoaLumberjack'

 

创建UIImage的分类

.h 文件中

/**

@param name svg name  xxx.svg

@param size image size

@return svg image

*/

+(UIImage *)svgImgNamed:(NSString *)name size:(CGSize)size;

.m

#import "UIImage+SVGTool.h"

#import <SVGKImage.h>

@implementation UIImage (SVGTool)

/**
 @param name svg name-->xxx.svg
 @param size image size
 @return svg image
 */
+(UIImage *)svgImgNamed:(NSString *)name size:(CGSize)size{
    SVGKImage *svgImg = [SVGKImage imageNamed:name];
    svgImg.size = size;
    return svgImg.UIImage;
}

@end

 

引用

    UIImage *image = [UIImage svgImgNamed:@"icon_light.svg" size:CGSizeMake(80,80)];

这样写的话太局限了,如果需求这样的图片一个其他颜色的还是重新写一个 是不是太麻烦了还浪费资源 不如换个方式呈现吧

.h

/**

@param name svg name  -->xxx.svg

@param size image size

@param color image color

@return svg image

*/

+ (UIImage *)svgImageNamed:(NSString *)name size:(CGSize)size imageColor:(UIColor *)color;

.m

/**

@param name svg name -->xxx.svg

@param size image size

@param color image color

@return svg image

*/

+ (UIImage *)svgImageNamed:(NSString *)name size:(CGSize)size imageColor:(UIColor *)color {

    SVGKImage *svgImage = [SVGKImage imageNamed:name];

    svgImage.size = size;

    CGRect rect = CGRectMake(0, 0, svgImage.size.width, svgImage.size.height);

    CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(svgImage.UIImage.CGImage);

    BOOL opaque = alphaInfo == kCGImageAlphaNoneSkipLast

    || alphaInfo == kCGImageAlphaNoneSkipFirst

    || alphaInfo == kCGImageAlphaNone;

    UIGraphicsBeginImageContextWithOptions(svgImage.size, opaque, svgImage.scale);

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextTranslateCTM(context, 0, svgImage.size.height);

    CGContextScaleCTM(context, 1.0, -1.0);

    CGContextSetBlendMode(context, kCGBlendModeNormal);

    CGContextClipToMask(context, rect, svgImage.UIImage.CGImage);

    CGContextSetFillColorWithColor(context, color.CGColor);

    CGContextFillRect(context, rect);

    UIImage *imageOut = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return imageOut;

}

引用

 UIImage *image = [UIImage svgImageNamed:@"icon_light.svg" size:CGSizeMake(80,80) imageColor:[UIColor greenColor]];

这样的话是不是方便多了 想要什么颜色的直接加个颜色就可以啦


注意事项:

1.调用以上代码真机运行也许SVGKit 中会错

例如:

找到 SVGLength.m文件中的+(float) pixelsPerInchForCurrentDevice{}方法 添加手机的型号 例如iPhone6 iPhone7

2.还有一些宏会报错 直接注释调就可以了(DDLogCWarn ...  等)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!