UIImageView添加SVG格式的图片

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 ...  等)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值