2017-11-24 10 views
0

にUIViewのアニメーションを停止することはできませんこれは私のアニメーションコードです:が迅速

UIView.animate(withDuration: 1, delay: 1, options: [.repeat], animations: { 
     self.micButtonOuterRing?.frame = CGRect(x: (self.originalOuterRingFrame?.origin.x)! - 30, y: (self.originalOuterRingFrame?.origin.y)! - 30, width: (self.originalOuterRingFrame?.width)! + 60, height: (self.originalOuterRingFrame?.height)! + 60) 
     self.micButtonOuterRing?.alpha = 0 
     self.micButtonOuterRing?.layer.cornerRadius = (self.micButtonOuterRing?.frame.width)!/2 
    }, completion: { _ in 
     self.micButtonOuterRing?.frame = self.originalOuterRingFrame! 
     self.micButtonOuterRing?.alpha = 1 
    }) 

私はので、私は次のことを実行して、私はボタンを押したときにそれを停止しようとしています:

@IBAction func micButtonPressed(_ sender: Any) { 

    micButtonOuterRing?.layer.removeAllAnimations() 

} 

しかし、アニメーションは続ける。私はprintステートメントを追加して機能したので、micButtonPressed関数が機能することを知っています。誰かが助けることができますか?

+0

アニメーションも開始するコードにログオンしてみてください。多分、あなたのボタンは両方を行います。 – matt

+0

[この質問の重複](https://stackoverflow.com/questions/39443163/remove-animation-in-swift) – Xcoder

+0

[迅速なアニメーションの削除]の可能な複製(https://stackoverflow.com/questions/39443163/remove-animation-in-swift) – Xcoder

答えて

0

ボタンアクションでこのコードを試してください。

+0

これは動作しません –

0

代わりにUIPropertyAnimatorを使用してください。あなたが一時停止させるように設計されています、stop、逆など、構文はほとんど古いUIViewAnimationメソッドと同じです。

+0

私は 'UIPropertyAnimator'を使用しましたが、アニメーションは繰り返されません。これは私のコードです:' self.micRingAnimation = UIViewPropertyAnimator。リピートを使用する場合は、アニメーションブロックでUIView.setAnimationRepeatCount(Float.greatestFiniteMagnitute)を設定するには、runningPropertyAnimator(withDuration:1、delay:1、options:[.repeat]、animation:{}、completion:{_ in} ' –

+0

代わりに、関数内でアニメーション呼び出しをラップし、完了ハンドラでその関数を呼び出して、現在のアニメーションが終了したときに新しいアニメーションを開始することができます。 –

+0

本当に奇妙な...アニメーションはまだ停止しません。私がアニメーションを開始するという事実は 'viewDidLayoutSubviews'ですか? –