首页 > 解决方案 > 在自定义选择器中自定义数字,使其成为 5 的乘数

问题描述

我使用了这里的代码,我想让自定义滑块只表示一个数字,该数字是 5 到 180 范围内的 5 的乘数。我在 XCode 12.5 中使用 SwiftUI,这里是代码。PS。这不是整个代码,但我希望代码接近此代码。

CustomSlider(value: $someValue, range: 5...180)

标签: iosswiftswiftuislider

解决方案


方法一

第一种方法是someValue每次更改时将 的值四舍五入到最接近的 5。滑块只能以固定增量上升,因此看起来确实有点跳跃。

代码:

struct ContentView: View {
    @State private var someValue: CGFloat = 5

    var body: some View {
        VStack {
            CustomSlider(value: $someValue, range: 5 ... 180)

            Text("Value: \(someValue)")
        }
        .onChange(of: someValue) { newValue in
            someValue = round(newValue / 5) * 5
        }
    }
}

方法二

这种方法滑块是连续的,但是您读取的值sliderValue会四舍五入到最接近的 5。我更喜欢这种方法,因为它感觉更平滑。

代码:

struct ContentView: View {
    @State private var someValue: CGFloat = 5
    private var sliderValue: CGFloat {
        round(someValue / 5) * 5
    }

    var body: some View {
        VStack {
            CustomSlider(value: $someValue, range: 5 ... 180)

            Text("Value: \(sliderValue)")
        }
    }
}

推荐阅读