iOS(Swift4)以上で遅延処理を行う場合についてのまとめ。
単純に処理を遅延させたい
DispatchQueueのasyncAfterを利用。
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
// 2.0秒後に実行したい処理
}
アニメーションが絡む処理を遅延させたい
UIView.animateを利用。
UIView.animate(withDuration: 1.0, delay: 2.0, options: .autoreverse, animations: {
// 2.0秒後に実行したいアニメーション処理
}, completion: { _ in
// アニメーション終了後に実行したい処理
})
- withDuration: アニメーションの実行時間
- delay: 遅延時間
- option: アニメーション動作の種類
UIView.AnimationOptions
- animations: アニメーション処理
- completion: アニメーション完了後処理 (nilでもOK)
※UIView.AnimationOptionsの種類:
https://developer.apple.com/documentation/uikit/uiview/animationoptions
参考
公式ドキュメント
- https://developer.apple.com/documentation/dispatch/dispatchqueue/2300020-asyncafter
- https://developer.apple.com/documentation/uikit/uiview/1622451-animate
参考サイト