如何在UIScrollView.layer.addAnimation中停止CAKeyframeAnimation - removeAnimationForKey和removeAllAnimations什么都不做

时间:2016-05-12 05:05:50

标签: ios uiscrollview calayer cakeyframeanimation

我用这种方式为UIScrollView制作动画:

let anim = CAKeyframeAnimation()
anim.keyPath = "bounds.origin.x"
anim.values = self.animValues
anim.keyTimes = self.animKeyTimes
anim.duration = self.animDuration
anim.additive = true
myScrollView.layer.addAnimation(anim, forKey: "move")

然后当用户点击取消时,我尝试了这个:

myScrollView.layer.removeAnimationForKey("move")
myScrollView.layer.removeAllAnimations()

两者都不起作用。 我也尝试过设置anim.duration = 0.0。那没有效果。 我无法尝试使用myScrollView.layer.presentationLayer()执行任何操作,因为presentationLayer()nil

动画不需要暂停。它们可以完全停止并丢弃。它们永远不会重新启动。

这些动画可以是30秒或更长时间。强制用户等到它完成后不是好的UX / UI。

非常感谢任何帮助。

谢谢,

大卫

2 个答案:

答案 0 :(得分:0)

您可以尝试将动画速度设置为零

myScrollView.layer.speed = 0.0

尝试anim.keyPath = "position.x"而不是“bounds.origin.x”。这对layer.removeAllAnimations()

有用

答案 1 :(得分:0)

我不得不重新构建我的项目文件以解决其他问题,当我再次尝试这个问题时,它按照预期的方式工作!

这至少是我第三次重建这个应用程序的项目文件。 我必须做对了!