如何改变SwiftUI的Slider的圆圈颜色?

问题描述 投票:0回答:2

我正在尝试更改

SwiftUI
滑块圆圈的颜色。但不幸的是,我找不到方法。我正在分享我到目前为止所做的代码。还有视图的屏幕截图。我不想在 SwiftUI 视图中使用
UIKit
Slider。我感谢任何帮助和建议。

  Slider(
                value: $lightIntensity,
                in: 1...5,
                step: 2
            ) {
                /// Used for accessibility 
                Text(R.string.localized.settings_appliancedetail_button_interior_light())
            }
        onEditingChanged: { editing in
                isEditing = editing
            }
        .accentColor(R.color.primary.color)

这是视图的屏幕截图: enter image description here

所以我只想将白色圆圈颜色更改为原色。

ios swiftui slider
2个回答
0
投票

您可以使用

UISlider.appearance()
尝试这种方法:

struct ContentView: View {
    @Binding var lightIntensity: Float

    init(lightIntensity: Binding<Float>) {
        self._lightIntensity = lightIntensity

        UISlider.appearance().thumbTintColor = R.color.primary.color //<- here
    }
}

0
投票

您可以使用覆盖层来非常有效地覆盖按钮:

let minLightIntensity = 1.0
let maxLightIntensity = 5.0
Slider(/* as before */) {
    //...
}
.accentColor(R.color.primary.color)
.overlay {
    GeometryReader { proxy in
        let w = proxy.size.width
        let h = proxy.size.height
        Circle()
            .fill(R.color.primary.color)
            .offset(x: (lightIntensity - minLightIntensity) * (w - h) / (maxLightIntensity - minLightIntensity))
            .allowsHitTesting(false)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.