gpt4 book ai didi

ios - CABasicAnimation animationDidStart 确实被调用了,但是 animationDidStop 从来没有被调用过

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:56:50 49 4
gpt4 key购买 nike

saw一个lotanswers关于这个topic ,但无法解决我的特殊情况。

Here is a video with complete animation and logging timeline

class AnimationDelegate: UIView {

deinit {
print("AnimationDelegate deinitialized")
}

override func animationDidStart(anim: CAAnimation) {
print("animationDidStart")
}

override func animationDidStop(anim: CAAnimation, finished flag: Bool) {
print("animationDidStop")
}

func play() {
let line_1 = CAShapeLayer()
...

let animation = CABasicAnimation()
animation.delegate = self
animation.duration = 3000
animation.repeatCount = 1
animation.keyPath = "strokeEnd"
animation.fromValue = 0
animation.toValue = 360

layer.addSublayer(line_1)
line_1.addAnimation(animation, forKey: "StrokeAnimation")

}
}

let delegate = AnimationDelegate(frame: container.bounds)
container.addSubview(delegate)

delegate.play()

问题是 animationDidStart 被调用了,但是 animationDidStop 没有被调用。

这怎么可能?

最佳答案

animationDidStop 将被调用,如果您等待更长时间。但这肯定不是您预期的行为。

我了解到您想让动画运行 3 秒而不是 3000 秒;一旦完成,就会收到来自委托(delegate)回调的通知,即 animationDidStop

因此,您需要更改:

animation.duration = 3 

和:

animation.toValue = 1

因此,您会看到 animationDidStartanimationDidStop 都将相应地被调用。

关于ios - CABasicAnimation animationDidStart 确实被调用了,但是 animationDidStop 从来没有被调用过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33400206/

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