2017-06-01 54 views
0

我是SVG图像使用新手。我在iOS中使用svg图像。我使用SVGKLayeredImageView获取CALayer。并改变SVG图像不同部分的颜色。现在我坚持要点,如何使用修改的图层在本地保存图像。 这是我的代码。请审查它,并给我很好的意见。 在此先感谢。如何在swift中保存和检索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("[email protected]", 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图像,请给出答案。等待回应。

回答

0

使用SVGKExporterNSData获取NSData对象,然后使用NSDatawrite方法之一将其写入文件。喜欢的东西(注:未测试):

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

此外,而不是你使用获得“毛”层嵌套循环,看看在layerWithIdentifier方法上SVGKImage。在this list of SVGKit recipes中有一个示例 - 查找该页面上的“查找从特定SVGElement生成的CALayer”。

相关问题