標準のアニメーション関数を作成することで、アプリケーション全体で使用される繰り返しコードの冗長性を減らそうとしています。UIButtonアニメーションの拡張子
希望の結果は、オプションの完了ハンドラを持つボタンのアニメーションです。ここに私のコードは次のとおりです。MyViewController
オン
extension UIButton {
func animate(duration: TimeInterval, completion: ((Bool) -> Swift.Void)?) {
UIView.animate(withDuration: duration, delay: 0.0, usingSpringWithDamping: 0.2, initialSpringVelocity: 6.0, options: [], animations: {
self.transform = .identity
}, completion: completion)
}
}
、私はこのようなアニメーションメソッドを呼び出すと、セグエが起こるが、アニメにはない:
myButton.animate(duration: 0.25) { _ in
self.performSegue(withIdentifier: "mySequeIdentifier", sender: sender)
}
私はセグエを確保するためにself.performSegue
コメントアウトされましたストーリーボードに配線されていないことを確認し、そうでないことを確認します。
私もこのコードでアニメーション関数を宣言しようとした:
func animate(duration: TimeInterval, completion: @escaping (Bool)->Void?) {
UIView.animate(withDuration: duration, delay: 0.0, usingSpringWithDamping: 0.2, initialSpringVelocity: 6.0, options: .allowUserInteraction, animations: {
self.transform = .identity
}, completion: completion as? (Bool) -> Void)
}
そのコードを使用すると、何も起こりません。クラッシュさえありません。
ありがとうございます。あなたの提案は、私の誤りがどこにあるのかを歓迎します。
遅延0.3秒を試してみてください。 – ankit
同じ結果です。 Segueが起こる、アニメーションはしません。 – Adrian