UIImage+MOSVG.m 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. //
  2. // UIImage+MOSVG.m
  3. // MiMoLive
  4. //
  5. // Created by SuperC on 2023/11/21.
  6. //
  7. #import "UIImage+MOSVG.h"
  8. @implementation UIImage (MOSVG)
  9. + (UIImage*)br_svgImageNamed:(NSString*)name {
  10.     SVGKImage *svgImage = [SVGKImage imageNamed:name];
  11.     return svgImage.UIImage;
  12. }
  13. + (UIImage*)br_svgImageNamed:(NSString*)name size:(CGSize)size {
  14.     SVGKImage *svgImage = [SVGKImage imageNamed:name];
  15.     svgImage.size = size;
  16.     return svgImage.UIImage;
  17. }
  18. + (UIImage*)br_svgImageNamed:(NSString*)name size:(CGSize)size tintColor:(UIColor*)tintColor {
  19.     SVGKImage *svgImage = [SVGKImage imageNamed:name];
  20.     svgImage.size = size;
  21.     CGRect rect = CGRectMake(0,0, svgImage.size.width, svgImage.size.height);
  22.     CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(svgImage.UIImage.CGImage);
  23.     BOOL opaque = alphaInfo == kCGImageAlphaNoneSkipLast || alphaInfo == kCGImageAlphaNoneSkipFirst || alphaInfo == kCGImageAlphaNone;
  24.     UIGraphicsBeginImageContextWithOptions(svgImage.size, opaque, svgImage.scale);
  25.     CGContextRef context = UIGraphicsGetCurrentContext();
  26.     CGContextTranslateCTM(context,0, svgImage.size.height);
  27.     CGContextScaleCTM(context,1.0, -1.0);
  28.     CGContextSetBlendMode(context, kCGBlendModeNormal);
  29.     CGContextClipToMask(context, rect, svgImage.UIImage.CGImage);
  30.     CGContextSetFillColorWithColor(context, tintColor.CGColor);
  31.     CGContextFillRect(context, rect);
  32.     UIImage *imageOut = UIGraphicsGetImageFromCurrentImageContext();
  33.     UIGraphicsEndImageContext();
  34.     return imageOut;
  35. }
  36. @end