Slider用法示例
- isTracking指示用户是否在拖拽Slider, 在- onEditingChanged的block里设置,防止拖拽的同时被- Timer修改
- $processValue前面的- $表示绑定
- in后面跟Slider的范围
- Slider的label是显示不出来的,SwiftUI的bug
- specifier后面是字符串的格式,保留两位小数
- 想要在value值改变时做事情,重写Binding的set,调用sliderChanged
//
//  ContentView.swift
//  SliderDemo
//
//  Created by dacaiguoguo on 2021/7/5.
//
import SwiftUI
var isTracking:Bool = false
struct ContentView: View {
    @State var processValue:CGFloat = 0
    var body: some View {
        VStack {
            Slider(value: $processValue, in: 0 ... 100, label: {
                Text("aValue")
            })
            Slider(value: $processValue, in: 0 ... 100) {
                Label(
                    title: { Text("Label") },
                    icon: { Image(systemName: "star.fill") }
                )
            }
            Slider(value: $processValue, in: 0 ... 100, step: 1, onEditingChanged: { isEditing in
                debugPrint("isEditing: \(isEditing)")
                isTracking = isEditing
            }, minimumValueLabel: Text("0"), maximumValueLabel: Text("100")) {
                Text("Hello, world!")
            }
            Text("Hello \(processValue, specifier: "%.2f")")
                .padding()
            Slider(value: Binding(get: {
                processValue
            }, set: { (newVal) in
                processValue = newVal
                sliderChanged()
            }), in: 0 ... 100, step: 1, onEditingChanged: { isEditing in
                debugPrint("isEditing: \(isEditing)")
                isTracking = isEditing
            })
        }.onAppear() {
            Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { atimer in
                if !isTracking {
                    processValue += 1
                    if processValue > 100 {
                        processValue = 0
                    }
                }
            }
        }
    }
    func sliderChanged() {
        print("Slider value changed to \(processValue)")
    }
}
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
复制代码© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
    






















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)
