此视图是一个适应我的 SwiftUI 项目的 UIKit 滑块,因为在 SwiftUI 中Slider无法更改其轨道颜色,这可能是一个错误,因为您应该能够使用.accentColor.
不管怎样,这个滑块根据它的值改变它的轨道颜色,从绿色到红色。value如果绑定到普通属性,整个事情就完美地工作了(尽管我的渐变还不是很好)@State,但是当你尝试将它附加到它的属性时,@ObservedObject它就会中断,尽管轨道颜色仍然有效,但它永远不会改变基础价值。我想这只是一个错误,但更可能的是这里有一些东西需要修复。
struct RedscaleSlider: UIViewRepresentable {
@Binding var value: Double
var min: Double
var max: Double
class Coordinator: NSObject {
@Binding var value: Double
var min: Double
var max: Double
init(value: Binding<Double>, min: Double = 0, max: Double = 100) {
_value = value
self.min = min
self.max = max
}
@objc func valueChanged(_ sender: UISlider) {
self.value = Double(sender.value)
sender.minimumTrackTintColor = green_to_red_gradient(value: (Double(sender.value) …Run Code Online (Sandbox Code Playgroud)