我使用CAKeyFrameAnimation的方式与它在this页面上的使用方式类似。我试图在动画结束时发生动作,但我不确定如何做到这一点。我查看了CAKeyFrameAnimation文档并且没有看到关于completionHandler或其他任何内容的任何内容,我唯一能想到的就是为动画长度设置一个计时器并在此之后处理所有内容。我认为必须有一些更好的方式来通知动画已经完成,但我还没有找到更好的解决方案。
答案 0 :(得分:6)
<强>夫特强>
使用CATransaction.setCompletionBlock
,如下所示。
CATransaction.begin()
CATransaction.setCompletionBlock({
view.isHidden = true
})
let animation = CAKeyframeAnimation(keyPath: "position")
animation.path = path
view.layer.add(animation, forKey: "moveIn")
CATransaction.commit()
答案 1 :(得分:4)
你没有查找继承链。 CAAnimation
有一个委托属性和一个委托方法animationDidStop:finished:
,可用于检测动画的结束。