【问题标题】:Setting the value of a SwiftUI slider by tapping on it通过点击设置 SwiftUI 滑块的值
【发布时间】:2019-11-04 04:42:38
【问题描述】:

如何通过点击 SwiftUI Slider 来更改它的值?

【问题讨论】:

    标签: slider swiftui


    【解决方案1】:

    这是我使用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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多