【iOS】加載SVG圖片

一、導入 SVGKit 第三方庫

# SVG 圖片展示
pod 'SVGKit'

二、使用 SVGKit 庫

  • 新建 UIImage+SVG 分類,二次封裝SVGKit 庫
/// UIImage+SVG.h
#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface UIImage (SVG)
/**
 show svg image
 @param name svg name
 @return svg image
 */
+ (UIImage *)br_svgImageNamed:(NSString *)name;

/**
 show svg image
 @param name svg name
 @param size image size
 @return svg image
 */
+ (UIImage *)br_svgImageNamed:(NSString *)name size:(CGSize)size;

/**
 show svg image
 @param name       svg name
 @param size       image size
 @param tintColor  image color
 @return svg image
 */
+ (UIImage *)br_svgImageNamed:(NSString *)name size:(CGSize)size tintColor:(UIColor *)tintColor;

@end

NS_ASSUME_NONNULL_END
/// UIImage+SVG.m
#import "UIImage+SVG.h"
#import <SVGKit/SVGKImage.h>

@implementation UIImage (SVG)

/**
 show svg image
 
 @param name svg name
 @return svg image
 */
+ (UIImage *)br_svgImageNamed:(NSString *)name {
    SVGKImage *svgImage = [SVGKImage imageNamed:name];
    return svgImage.UIImage;
}

/**
 show svg image
 
 @param name svg name
 @param size image size
 @return svg image
 */
+ (UIImage *)br_svgImageNamed:(NSString *)name size:(CGSize)size {
    SVGKImage *svgImage = [SVGKImage imageNamed:name];
    svgImage.size = size;
    return svgImage.UIImage;
}

/**
 show svg image
 
 @param name       svg name
 @param size       image size
 @param tintColor  image color
 @return svg image
 */
+ (UIImage *)br_svgImageNamed:(NSString *)name size:(CGSize)size tintColor:(UIColor *)tintColor {
    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, tintColor.CGColor);
    CGContextFillRect(context, rect);
    UIImage *imageOut = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return imageOut;
}

@end
  • 加載SVG圖片
UIImage *image1 = [UIImage br_svgImageNamed:@"icon_back.svg"];
UIImage *image2 = [UIImage br_svgImageNamed:@"icon_back.svg" size:CGSizeMake(12.0, 24.0)];
UIImage *image3 = [UIImage br_svgImageNamed:@"icon_back.svg" size:CGSizeMake(12.0, 24.0) tintColor:[UIColor whiteColor]];
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 廢話不多說,直接上菜 1、Pod導入SVGKit 在項目里的Podfile添加pod 'SVGKit'打開Mac終...
    鄧布利多教授閱讀 5,608評論 0 5
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂有人憂愁,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,834評論 28 54
  • 人工智能是什么?什么是人工智能?人工智能是未來發(fā)展的必然趨勢嗎?以后人工智能技術真的能達到電影里機器人的智能水平嗎...
    ZLLZ閱讀 4,098評論 0 5
  • 首先介紹下自己的背景: 我11年左右入市到現(xiàn)在,也差不多有4年時間,看過一些關于股票投資的書籍,對于巴菲特等股神的...
    瞎投資閱讀 5,936評論 3 8
  • ![Flask](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW...
    極客學院Wiki閱讀 7,816評論 0 3

友情鏈接更多精彩內(nèi)容