2017-06-01 57 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」。

相關問題