2016-05-12 4 views
0

Я криничила UIScrollView так:Как остановить CAKeyframeAnimation в UIScrollView.layer.addAnimation - removeAnimationForKey и removeAllAnimations ничего не делать

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() is nil.

Анимации не нужно приостанавливать. Они могут быть полностью остановлены и отброшены. Они никогда не перезапускаются.

Эти анимации могут составлять 30 секунд или более. Принуждение пользователя ждать, пока оно закончится, не является хорошим UX/UI.

Любая помощь была бы принята с благодарностью.

Спасибо,

David

+0

Вы делаете что-либо в обработчике завершения анимации? означает, когда полная анимация начнется снова? – Lion

+0

Lion, У меня нет обработчика завершения. Я не хочу начинать снова. Анимация успевает с другим процессом, который длится столько же времени. Мне не нужно обнаруживать конец обоих. Thanks, David –

ответ

0

Мне пришлось перестроить файл проекта для другой проблемы, и когда я попробовал это снова, он работал так, как он должен был!

Это, по крайней мере, в третий раз, когда мне пришлось перестроить файл проекта для этого приложения. Я должен что-то делать правильно!

0

Вы можете попробовать установить скорость анимации до нуля

myScrollView.layer.speed = 0.0 

Попробуйте anim.keyPath = "position.x" вместо "bounds.origin.x". Это сработало для меня с layer.removeAllAnimations()

+0

stefos, Но я хочу остановить его и заставить его уйти. Например, если у меня есть 30-секундная анимация, и пользователь нажимает отменить через 10 секунд. Я хочу, чтобы они смогли начать старт и начать с самого начала. Я не хочу, чтобы они возобновлялись. –

+0

И «position.x» не останавливается больше, чем «bounds.origin.x». –

 Смежные вопросы

  • Нет связанных вопросов^_^