いくつかの状態に基づいた SwiftUI アニメーションがあります:
withAnimation(.linear(duration: 0.1)) {
self.someState = newState
}
上記のアニメーションが完了したときにトリガーされるコールバックはありますか?
SwiftUI で完了ブロックを使用してアニメーションを実現する方法についての提案があればwithAnimation
、それも歓迎します。
アニメーションがいつ完了するかを知りたいので、他の操作を実行できます。この例では、アニメーションが完了したらコンソールに出力したいだけです。
ベストアンサー1
iOS 17以降
iOS 17 以降では、完了パラメータを使用できます。
withAnimation(.linear(duration: 0.1)) {
self.someState = newState
} completion: {
print("Animation finished")
}
iOS 13以降
以前の iOS バージョンでは、この問題に対する適切な解決策はありません。
ただし、 の継続時間を指定できる場合は、 を使用して、アニメーションが終了したときに正確にアクションをトリガーAnimation
できます。DispatchQueue.main.asyncAfter
withAnimation(.linear(duration: 0.1)) {
self.someState = newState
}
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
print("Animation finished")
}