CollectionView があり、ユーザーが選択した CollectionViewCell 内にアニメーションを作成したいと考えています。カスタム アニメーションを段階的に作成したいので、animateKeyframesWithDuration を使用することにしました。私のコードは次のようになります。
func animate() {
UIView.animateKeyframesWithDuration(1.0, delay: 0.0, options: .AllowUserInteraction, animations: { () -> Void in
UIView.addKeyframeWithRelativeStartTime(0.0, relativeDuration: 0.5, animations: { () -> Void in
// First step
})
UIView.addKeyframeWithRelativeStartTime(0.5, relativeDuration: 0.5, animations: { () -> Void in
// Second step
})
}) { (finished: Bool) -> Void in
if self.shouldStopAnimating {
self.loadingView.layer.removeAllAnimations()
} else {
self.animate()
}
}
}
これは、選択されたときにカスタム CollectionViewCell 内で実行されます。問題は、特定の時点ですぐにアニメーションを強制的に停止したいということです。しかし、私がそうすると、アニメーションは完全に停止せず、残りのアニメーションを別のセル (おそらく最後に再利用されたセル?) に移動するだけです。
なぜこれが起こっているのか理解できません。さまざまなアプローチを試しましたが、通常完了ブロックに入る前にアニメーションを正常に停止する方法はありません
誰かこれについて何か考えがありますか?