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! } }