2017-06-01 16 views
0

私はSVGの画像使用の新しいです。私はiOSでsvgイメージを使用しました。私はSVGKLayeredImageViewを使ってCALayerを取得します。そして、SVG Imageの異なる部分の色を変更します。今、私は、変更されたレイヤーを使用してローカルにイメージを保存する方法のポイントを固執しました。 これは私のコードです。それを見直して、私に良い意見を与えてください。 ありがとうございます。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

を使用してNSDataオブジェクトを取得し、NSDatawriteメソッドのいずれかを使用してファイルに書き出します。むしろ、あなたがSVGKImagelayerWithIdentifier方法を見て、「髪」レイヤーを取得するために使用するすべてのネストされたループよりも

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

、:何か(:テストされていないノート)などがあります。 this list of SVGKit recipesに例があります - そのページの「特定のSVGE要素から生成されたCALayerを検索」を探してください。

関連する問題