Gia*_*gar 6 function slider swiftui
我试图sliderchanged()在滑块值更改时触发该功能,我可能会遗漏一些非常基本的东西,但我发现的所有类似的东西都不起作用。没有像 Slider 的“动作”或旧的“ValueChanged”动作之类的东西吗?
这是我的代码:
struct CustomSlider1: View {
@State var progress: Float = 0.5
var body: some View {
VStack{
Slider(value: $progress)
.padding(.all)
Text(String(progress))
}
}
func sliderchanged() {
//do things
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!!
RPa*_*l99 23
您可以自定义Binding调用Binding's setter 中的函数:
@State var progress: Float = 0.5
var body: some View {
VStack{
Slider(value: Binding(get: {
self.progress
}, set: { (newVal) in
self.progress = newVal
self.sliderChanged()
}))
.padding(.all)
Text(String(progress))
}
}
func sliderChanged() {
print("Slider value changed to \(progress)")
}
Run Code Online (Sandbox Code Playgroud)
use*_*232 12
斯威夫特 5,iOS 13
另一种选择,简单地使用状态变量和闭包。
@State var alpha = 65
@State var alphaToShow = ""
Slider(value: $alpha, in: 65...90,step: 1,onEditingChanged: { data in
self.alphaToShow = String(Character(UnicodeScalar(Int(self.alpha))!))
// execute more code here
}
}).padding()
Text(alphaToShow)
Run Code Online (Sandbox Code Playgroud)
使用onChange修饰符获得持续更新的另一种方法。
import SwiftUI
struct SliderOnChange: View {
@State var progress: Float = 0.5
var body: some View {
VStack{
Slider(value: self.$progress)
.onChange(of: self.progress) { newProgress in
self.sliderChanged(to: newProgress)
}
Text(String(self.progress))
}
}
func sliderChanged(to progress: Float) {
print("Slider value changed to \(progress)")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3721 次 |
| 最近记录: |