美文网首页
svg 加载

svg 加载

作者: EnjoyWT | 来源:发表于2024-03-28 09:57 被阅读0次
  pod 'SVGKit'

扩展

//
//  UIImage+SVG.swift
//  CMS
//  Created by JoyTim on 2024/3/28
//  Copyright © 2024 ___ORGANIZATIONNAME___. All rights reserved.
//
    
import SVGKit
import UIKit
extension UIImage {
    /**
     Show SVG image
     
     - Parameters:
        - name: SVG name
     - Returns: SVG image
     */
    static func svgImageNamed(_ name: String) -> UIImage? {
        guard let svgImage = SVGKImage(named: name) else { return nil }
        return svgImage.uiImage
    }
    
    /**
     Show SVG image
     
     - Parameters:
        - name: SVG name
        - size: Image size
     - Returns: SVG image
     */
    static func svgImageNamed(_ name: String, size: CGSize) -> UIImage? {
        guard let svgImage = SVGKImage(named: name) else { return nil }
        svgImage.size = size
        return svgImage.uiImage
    }
    
    /**
     Show SVG image
     
     - Parameters:
        - name: SVG name
        - size: Image size
        - tintColor: Image color
     - Returns: SVG image
     */
    static func svgImageNamed(_ name: String, size: CGSize, tintColor: UIColor) -> UIImage? {
        guard let svgImage = SVGKImage(named: name) else { return nil }
        svgImage.size = size
        let rect = CGRect(x: 0, y: 0, width: svgImage.size.width, height: svgImage.size.height)
        let alphaInfo = svgImage.uiImage.cgImage?.alphaInfo ?? .none
        let opaque = alphaInfo == .noneSkipLast || alphaInfo == .noneSkipFirst || alphaInfo == .none
        UIGraphicsBeginImageContextWithOptions(svgImage.size, opaque, svgImage.scale)
        guard let context = UIGraphicsGetCurrentContext() else { return nil }
        context.translateBy(x: 0, y: svgImage.size.height)
        context.scaleBy(x: 1.0, y: -1.0)
        context.setBlendMode(.normal)
        context.clip(to: rect, mask: svgImage.uiImage.cgImage!)
        context.setFillColor(tintColor.cgColor)
        context.fill(rect)
        let imageOut = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return imageOut
    }
}


  1. 文件放到 main bundle 中
  2. 全称调用: UIImage.svgImageNamed("icon_defaultPage_home.svg")

相关文章

  • svg合并

    假如页面有多个svg图标要加载,多次加载不利,可将多个svg合并为一个加载 如下有两个svg 将他们的前后缀改为s...

  • SVG实现不规则图形点击

    SVG概念 SVG是一种图像文件格式,类似于PNG,JPG。只不过PNG需要图像引擎加载,SVG则是由画布来加载。...

  • WKWebView关于加载SVG图像的思考

    前言 最近项目需要加载网络SVG 图像,但是用了一些第三方库效果都很差。大家可以试试加载下面的svg。 SVG[h...

  • Vue 加载 svg icon - “vue-svg-loade

    前面我们介绍了通过先将 svg 模板加载到 body 中,然后再通过 use 标签去实例化 svg 的方式去加载 ...

  • SVG矢量图打造不规则自定义控件,可点击的中国地图

    1、SVG概念: SVG是一种图像文件格式,类似PNG,JPG。只不过PNG这种图片需要图像引擎加载,SVG则是由...

  • Android SVG

    1、SVG概念SVG是一种图像文件格式,类似于PNG JPG。只不过PNG这种图片需要图像引擎加载,SVG则是由画...

  • iOS加载SVG

    参考链接: 1.https://github.com/SVGKit/SVGKit2.http://www.coco...

  • 加载SVG动画

    收集参考备录,方便自己查阅,仅供学习参考SVG基础 android SVG动画 文件准备 1.在res/drawa...

  • Vue 加载 svg

    说明: 项目是 vcli 3.x 创建的注意: 如果需要修改 svg 颜色, 需要把 svg 的 fiil 和 s...

  • svg-sprite-loader 使用教程

    本篇文章是在 vue-cli 脚手架项目环境下讲解 svg-sprite-loader 将加载的 svg 图片拼接...

网友评论

      本文标题:svg 加载

      本文链接:https://www.haomeiwen.com/subject/bwsutjtx.html