gpt4 book ai didi

ios - 如何在 iOS 中使用 SVGKit 将 SVG 路径组件解析为 UIBezierPath?

转载 作者:搜寻专家 更新时间:2023-10-31 19:29:56 25 4
gpt4 key购买 nike

我正在使用 Swift 在 iOS 中为 SVG 图像制作动画。我已经能够使用 SVGKit ( https://github.com/SVGKit/SVGKit ) 轻松渲染 SVG,但要为其设置动画,我需要将 SVG 路径元素转换为 UIBezierPath。我可以使用其他库来这样做,但如果我可以单独使用 SVGKit 来完成所有这些,那就太好了。我也没有找到任何直接获取路径元素的方法。

最佳答案

我在使用 Swift 和使用 SVGKit 时遇到了同样的问题。即使遵循此 simple tutorial并将其转换为 swift,我可以渲染 SVG 但不能为线条图设置动画。对我有用的是切换到 PocketSVG

它们具有迭代每个层的功能,这就是我如何使用它来制作 SVG 文件的动画:

  let url = NSBundle.mainBundle().URLForResource("tiger", withExtension: "svg")!
let paths = SVGBezierPath.pathsFromSVGAtURL(url)

for path in paths {
// Create a layer for each path
let layer = CAShapeLayer()
layer.path = path.CGPath

// Default Settings
var strokeWidth = CGFloat(4.0)
var strokeColor = UIColor.blackColor().CGColor
var fillColor = UIColor.whiteColor().CGColor

// Inspect the SVG Path Attributes
print("path.svgAttributes = \(path.svgAttributes)")

if let strokeValue = path.svgAttributes["stroke-width"] {
if let strokeN = NSNumberFormatter().numberFromString(strokeValue as! String) {
strokeWidth = CGFloat(strokeN)
}
}

if let strokeValue = path.svgAttributes["stroke"] {
strokeColor = strokeValue as! CGColor
}

if let fillColorVal = path.svgAttributes["fill"] {
fillColor = fillColorVal as! CGColor
}

// Set its display properties
layer.lineWidth = strokeWidth
layer.strokeColor = strokeColor
layer.fillColor = fillColor

// Add it to the layer hierarchy
self.view.layer.addSublayer(layer)

// Simple Animation
let animation = CABasicAnimation(keyPath:"strokeEnd")
animation.duration = 4.0
animation.fromValue = 0.0
animation.toValue = 1.0
animation.fillMode = kCAFillModeForwards
animation.removedOnCompletion = false
layer.addAnimation(animation, forKey: "strokeEndAnimation")

关于ios - 如何在 iOS 中使用 SVGKit 将 SVG 路径组件解析为 UIBezierPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36673346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com