Как бы вы нарисовали узел на ползунковой дорожке в SwiftUI / Swift?

#swift #swiftui #uislider

#swift #swiftui #uislider

Вопрос:

Как бы вы нарисовали узел / пузырь на дорожке слайдера в SwiftUI / Swift? Требуется 10 узлов для 10 значений. Я воспользовался помощью png (если это поможет), и он отлично перемещается (переходит с одного узла на другой), однако мне также нужен цвет фона дорожки вместе с этими узлами. Не уверен, как это сделать.

Гиперссылка на демо для того, что я искал

Это то, что я сделал.

 let trackingImage = UIImage(named:"bubbles")!

func makeUIView(context: Context) -> UISlider {
let slider = UISlider(frame: .zero)
slider.thumbTintColor = thumbColor
slider.minimumTrackTintColor = minTrackColor
slider.maximumTrackTintColor = maxTrackColor
slider.value = Float(value)
slider.minimumValue = 0
slider.maximumValue = 9    
slider.setMinimumTrackImage(trackingImage, for:.normal)
slider.setMaximumTrackImage(trackingImage, for:.normal)
slider.minimumTrackTintColor = .systemBlue

slider.addTarget(
  context.coordinator,
  action: #selector(Coordinator.valueChanged(_:)),
  for: .valueChanged
)

return slider
  

}

Ответ №1:

Это может показаться очень наивным, но чтобы ответить на мой собственный вопрос, я просто добавил изображение этого типа (штрих и круг / узел вместе), установив для изображения значения setMinimumTrackImage и setMaximumTrackImage image .

 let trackingImage = UIImage(named:"slider_unselected")!
let trackedImage = UIImage(named:"selectedTracl82")!  
@Binding var value: Int

func makeUIView(context: Context) -> UISlider {

let slider = UISlider(frame: .zero)
slider.thumbTintColor = thumbColor
slider.minimumTrackTintColor = minTrackColor
slider.value = Float(value)
slider.minimumValue = 0
slider.maximumValue = 9    
slider.setMinimumTrackImage(trackedImage, for:.normal)
slider.setMaximumTrackImage(trackingImage, for:.normal)
  

Опубликовано на случай, если кто-то может столкнуться с такой же проблемой.