【发布时间】:2018-03-27 17:22:34
【问题描述】:
这是我的代码:
@objc func drawForm() {
i = Int(arc4random_uniform(UInt32(formNames.count)))
var drawPath = actualFormNamesFromFormClass[i]
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.strokeColor = UIColor.black.cgColor
shapeLayer.lineWidth = 6
shapeLayer.frame = CGRect(x: -115, y: 280, width: 350, height: 350)
var paths: [UIBezierPath] = drawPath()
let shapeBounds = shapeLayer.bounds
let mirror = CGAffineTransform(scaleX: 1,
y: -1)
let translate = CGAffineTransform(translationX: 0,
y: shapeBounds.size.height)
let concatenated = mirror.concatenating(translate)
for path in paths {
path.apply(concatenated)
}
guard let path = paths.first else {
return
}
paths.dropFirst()
.forEach {
path.append($0)
}
shapeLayer.transform = CATransform3DMakeScale(0.6, 0.6, 0)
shapeLayer.path = path.cgPath
self.view.layer.addSublayer(shapeLayer)
strokeEndAnimation.duration = 30.0
strokeEndAnimation.fromValue = 0.0
strokeEndAnimation.toValue = 1.0
shapeLayer.add(strokeEndAnimation, forKey: nil)
}
此代码为 shapeLayer 路径的绘制设置动画,但是我在网上找不到有关删除此层并停止此基本动画或删除绘制的 cgPath 的任何信息...任何帮助将不胜感激!
【问题讨论】:
-
顺便说一句,您可能没有注意到它,但我简化了答案中的代码,您从中获得了此路径构建逻辑。也就是说,您可以将其进一步简化为
let path = UIBezierPath()和paths.forEach { path.append($0) }。
标签: swift swift-playground cashapelayer cabasicanimation cgpath