您将如何在 swiftUI/Swift 的滑块轨道中绘制节点?

Posted

技术标签:

【中文标题】您将如何在 swiftUI/Swift 的滑块轨道中绘制节点?【英文标题】:How would you draw a node in the slider track in swiftUI/Swift? 【发布时间】:2020-10-14 06:39:25 【问题描述】:

如何在 swiftUI/Swift 的滑块轨道中绘制节点/气泡? 10 个值需要 10 个节点。 我得到了 png 的帮助(如果有帮助的话),它移动得非常好(从一个节点跳到另一个节点),但是,我还需要轨道背景颜色以及这些节点。不知道该怎么做。

Hyperlinking我一直在寻找的演示

这就是我所做的。

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 图像。

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)

张贴以防有人遇到同样的问题。

【讨论】:

以上是关于您将如何在 swiftUI/Swift 的滑块轨道中绘制节点?的主要内容,如果未能解决你的问题,请参考以下文章

我如何在光滑的滑块中只显示三张幻灯片?

css box-shadow删除Chrome中的滑块轨道

json box-shadow删除Chrome中的滑块轨道

更改 MPVolumeView 的滑块

如何在颤动的滑块中填充拇指周围的颜色

如何在自定义 UISlider 中在滑块值 0 之前和滑块值 100 之后提供填充