1

我是 SVG 图像使用的新手。我在 iOS 中使用了 svg 图像。我使用 SVGKLayeredImageView 获得 CALayer。并改变 SVG 图像不同部分的颜色。现在我坚持这一点,如何使用修改后的图层在本地保存图像。这是我的代码。请审查它并给我好的意见。提前致谢。

var layer = CALayer()

let svgImage = SVGKImage(named: "Bella_1.svg")

let imageView: SVGKLayeredImageView? = SVGKLayeredImageView.init(svgkImage: svgImage)
imageView?.sizeToFit()
Character_view.addSubview(imageView!)

layer = (imageView?.layer)!

func haircolor_Selection()  {
        for subLayer: CALayer in (layer.sublayers)!
        {
            print("%@", subLayer.self)
            for subSubLayer: CALayer in subLayer.sublayers!
            {
                print("%@", subSubLayer.self)
                for subSubSubLayer: CALayer in subSubLayer.sublayers!
                {
                    print("%@", subSubSubLayer.self)
                    for subSubSub1Layer: CALayer in subSubSubLayer.sublayers! {
                        print("%@", subSubSub1Layer.self)
                        if(subSubSub1Layer.name == "hair")
                        {
                            for subHairLayer: CALayer in subSubSub1Layer.sublayers!{
                                print("$@", subHairLayer.self)

                                if(subHairLayer.name == "main-colour_1_")
                                {

                                    changeFillColorRecursively(sublayers: [subHairLayer], color: image_Color)
                                }
                            }

                        }

                    }
                }
            }
        }

    }
 func changeFillColorRecursively(sublayers: [CALayer], color: UIColor) {
        for layer_object in sublayers {
            if let l = layer_object as? CAShapeLayer {
                l.fillColor = color.cgColor
            }
            if let l = layer_object as? CALayer, let sub = l.sublayers {
                changeFillColorRecursively(sublayers: sub, color: color)
            }
        }
    }

我想保存这个修改后的 svg 图片,请给出答案。等待回复。

4

1 回答 1

0

用于SVGKExporterNSData获取对象,然后使用's方法NSData之一将其写入文件。类似的东西(注意:未经测试):NSDatawrite

let data = SVGKExporterNSData.exportAsNSData(image: svgImage)
data.write(toFile: filePath, atomically: true)

此外,不要使用所有用于获取“头发”层的嵌套循环,请layerWithIdentifier查看SVGKImage. 在这个 SVGKit 配方列表中有一个示例——在该页面上查找“查找从特定 SVGElement 生成的 CALayer”。

于 2017-06-01T15:12:26.370 回答