Как сохранить и получить изображение SVG в Swift.
Я новичок в использовании изображений SVG. Я использовал изображение SVG в iOS. Я получаю CALayer, используя SVGKLayeredImageView. И изменить цвет другой части изображения 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, пожалуйста, дайте ответ на это. В ожидании ответа.
1 ответ
Использование SVGKExporterNSData
чтобы получить NSData
объект, а затем записать это в файл, используя один из NSData
"s write
методы. Что-то вроде (примечание: не проверено):
let data = SVGKExporterNSData.exportAsNSData(image: svgImage)
data.write(toFile: filePath, atomically: true)
Кроме того, вместо всех вложенных циклов, которые вы используете, чтобы получить слой "волос", взгляните на layerWithIdentifier
метод на SVGKImage
, В этом списке рецептов SVGKit есть пример - найдите "Найти CALayer, который был сгенерирован из определенного SVGElement" на этой странице.