通过点击来设置SwiftUI滑块的值

如何通过轻按来更改SwiftUI Slider的值?

fszxg 回答:通过点击来设置SwiftUI滑块的值

这是我使用GeometryReader创建的最小化实现,该值四舍五入到最接近的值:

struct TappableSlider: View {
    var value: Binding<Float>
    var range: ClosedRange<Float>
    var step: Float

    var body: some View {
        GeometryReader { geometry in
            Slider(value: self.value,in: self.range,step: self.step)
                .gesture(DragGesture(minimumDistance: 0).onEnded { value in
                    let percent = min(max(0,Float(value.location.x / geometry.size.width * 1)),1)
                    let newValue = self.range.lowerBound + round(percent * (self.range.upperBound - self.range.lowerBound))
                    self.value.wrappedValue = newValue
                })
        }
    }
}

可以像普通滑块一样使用,例如

TappableSlider(value: $sliderValue,in: 1...7,step: 1.0)
本文链接:https://www.f2er.com/3169070.html

大家都在问