Swift SVG Fil颜色到SVGImage

我正在使用SVGKit来显示图像

https://github.com/SVGKit/SVGKit/

如何为SVGImage应用填充颜色

let namSvgImgVar = SVGKImage(named: namSvgImg) namSvgImgVar.setFilColor() 

想要实现这个setFilColor函数

希望Swift在他们的下一个版本中增加了这个function

经过一场噩梦,我想出了这个解决scheme
在Swift中使用自动适合View的SVG,并且可以在一行代码中添加填充颜色

这是所有谁不想像我一样挣扎的人

| * | 用法:

 let svgImgVar = getSvgImgFnc("svgImjFileName", ClrVar : ClrVar) // Can use this Image anywhere in your code 

| * | 脚步 :

我使用简单的SwiftSVG库从SVG文件获取UIView

| * | 安装SwiftSVG库

1)使用pod进行安装:

//对于Swift 3

 pod 'SwiftSVG' 

//对于Swift 2.3

 pod 'SwiftSVG', '1.1.5' 

2)添加框架

转到AppSettings
– >常规选项卡
– >向下滚动到链接的框架和库
– >点击加号图标
– >selectSVG.framework

3)在你的项目的任何地方添加下面的代码

 func getSvgImgFnc(svgImjFileNameVar: String, ClrVar: UIColor) -> UIImage { let svgURL = NSBundle.mainBundle().URLForResource(svgImjFileNameVar, withExtension: "svg") let svgVyuVar = UIView(SVGURL: svgURL!) /* The width, height and viewPort are set to 100 <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 100 100"> So we need to set UIView Rect also same */ svgVyuVar.frame = CGRect(x: 0, y: 0, width: 100, height: 100) for svgVyuLyrIdx in svgVyuVar.layer.sublayers! { for subSvgVyuLyrIdx in svgVyuLyrIdx.sublayers! { if(subSvgVyuLyrIdx.isKindOfClass(CAShapeLayer)) { let SvgShpLyrIdx = subSvgVyuLyrIdx as? CAShapeLayer SvgShpLyrIdx!.fillColor = ClrVar.CGColor } } } return svgVyuVar.getImgFromVyuFnc() } extension UIView { func getImgFromVyuFnc() -> UIImage { UIGraphicsBeginImageContext(self.frame.size) self.layer.renderInContext(UIGraphicsGetCurrentContext()!) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image! } }