SwiftUIでいこう! - Timer処理まとめ。
タイマーを作るときの作り方をまとめ。簡単にXcodeのplaygroundで実行してみます。
import Foundation
var count = 0
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { timer in
count += 1
print(count)
}
これで、コンソールに1,2,3,・・・とカウントアップされます。これを関数に変えても同じことが出来ます。
var count = 0
func fireTimer() {
count += 1
print(count)
}
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { timer in
fireTimer()
}
では、Replacing Foundation Timers with Timer Publishersと題して、Publisherを使ったシンプルな書き方が紹介されています。
Publisher、Combineを使った方法です。今後はこちらを使うことが主流になりそうです。
import Combine
import Foundation
let cancellable = Timer.publish(every: 1, on: .main, in: .default)
.autoconnect()
.sink { _ in
periodicalFunction()
}
func periodicalFunction() {
print("update")
}
これを実行すると、1秒毎に"update"という文字がコンソールに出力されます。関数を作ってそれを定期的な時間に実行させています。
そして、タイマーを止めるときのコード。
timer = Timer.scheduledTimer()
と作った場合、止める時は
func stopTimer() {
timer?.invalidate()
}
とします。
Combineを使う場合動かすときは
timerCancelable = Timer.publish()
として、止める時は
func stopTimer() {
timerCancelable?.cancel()
}
とします。timerCancelableはAnyCancellableに適合させたものを使います。
以下参考サイト。
How to use a timer with SwiftUI
この記事が気に入ったらサポートをしてみませんか?