SwiftUI Timer.publish 的简介和使用代码演示

14 min read

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,以为时间事件订阅者提供当前的计数器值。在视图消失时,我们停止定时器。