节拍器 SwiftUI,每当更改@State var 时更改计时器间隔
Metronome SwiftUI, Change timer interval whenever the @State var is changed
我正在使用 swiftUI 构建节拍器
我有一个连接到滑块的@State 变量。
@State private var period: Double
Slider(value: period, in: 0.25...5, step: 0.25)
现在只有重启节拍器才能重新设置时间间隔
Button(action: { startStop = !startStop
self.timer = Timer.publish(every: self.period, on: .main, in:.default).autoconnect()
} ){
Text("START/STOP")
}
但是,我想在滑块移动时触发“self.timer = Timer.publish(....”。有没有办法在@时触发 ObservableObject @Published var状态变量改变了吗?这样我就可以使用“.onReceive()”函数来触发“self.timer = Timer.publish(....”
谢谢
当 @State
值更改时执行代码的最简单方法是将 onChange
修饰符添加到您定义 @State
的视图的子视图,例如:
struct ContentView: View {
@State private var period: Double = 0.5
var body: some View {
Slider(value: period, in: 0.25...5, step: 0.25)
.onChange(of: period) { newValue in
// perform your code here
}
}
}
另见 Apple's documentation and an example on Hacking With Swift。
我正在使用 swiftUI 构建节拍器
我有一个连接到滑块的@State 变量。
@State private var period: Double
Slider(value: period, in: 0.25...5, step: 0.25)
现在只有重启节拍器才能重新设置时间间隔
Button(action: { startStop = !startStop
self.timer = Timer.publish(every: self.period, on: .main, in:.default).autoconnect()
} ){
Text("START/STOP")
}
但是,我想在滑块移动时触发“self.timer = Timer.publish(....”。有没有办法在@时触发 ObservableObject @Published var状态变量改变了吗?这样我就可以使用“.onReceive()”函数来触发“self.timer = Timer.publish(....”
谢谢
当 @State
值更改时执行代码的最简单方法是将 onChange
修饰符添加到您定义 @State
的视图的子视图,例如:
struct ContentView: View {
@State private var period: Double = 0.5
var body: some View {
Slider(value: period, in: 0.25...5, step: 0.25)
.onChange(of: period) { newValue in
// perform your code here
}
}
}
另见 Apple's documentation and an example on Hacking With Swift。