SwiftUI 的 Timer.publish() 可以创建一个定时器,通过一个 Publisher 发布时间事件。当定时器触发时,会向全部订阅者发送一个时间事件。
使用示例如下:
import SwiftUI
import Combine
struct TimerView: View {
@State var counter = 0
var cancellable: AnyCancellable?
var body: some View {
Text("Counter: \(counter)")
.onAppear {
self.cancellable = Timer.publish(every: 1, on: .main, in: .default)
.autoconnect()
.sink() { _ in
self.counter += 1
}
}
.onDisappear {
self.cancellable?.cancel()
}
}
}
在上面的代码示例中,每秒钟定时器会触发一次,并且每次触发时,counter
的值都会增加。在视图出现时,我们创建了一个定时器,并将其连接到一个 sink,以为时间事件订阅者提供当前的计数器值。在视图消失时,我们停止定时器。