我已成立了一个CADisplayLink
调用以下drawCircle()
功能在10秒内以画圆的路径动画:CAShapeLayer行程未完成
func drawCircle() {
currentDuration = currentDuration + displayLink.duration
circleLayer.strokeEnd = min(CGFloat(currentDuration/maxDuration), 1)
if (currentDuration >= maxDuration) {
stopCircleAnimation()
}
}
func stopCircleAnimation() {
let pausedTime = circleLayer.convertTime(CACurrentMediaTime(), fromLayer: nil)
circleLayer.speed = 0
circleLayer.timeOffset = pausedTime
}
其中currentDuration
是经过时间,maxDuration
等于到10.这工作正常,除了currentDuration >= maxDuration
。即使strokeEnd设置为1,它也不会完全完成圆。为什么是这样??
编辑
我认为它可能有一些做的circleLayer
的speed
财产。如果我把它设置得更高一些,例如10,那么这个圆圈是完全关闭的。
其实我需要使用CADisplayLink因为我如果将它与视频时间一起使用,则需要尽可能精确。不过,关于禁用CATransaction操作是正确的(正如我在发布答案之前发现的那样)。我会接受你的回答,因为你已经详细了解了。 – Tometoyou