我正在尝试更改
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)
所以我只想将白色圆圈颜色更改为原色。
您可以使用
UISlider.appearance()
尝试这种方法:
struct ContentView: View {
@Binding var lightIntensity: Float
init(lightIntensity: Binding<Float>) {
self._lightIntensity = lightIntensity
UISlider.appearance().thumbTintColor = R.color.primary.color //<- here
}
}
您可以使用覆盖层来非常有效地覆盖按钮:
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)
}
}