我想要一个自定义滑块,要求的是minView的高度应为8 pt&maxView的高度应为4 pt,这是可见的角应为圆形。

我将滑块的最小和最大图像作为清晰的alpha图像设置为0.0

对于maxView,我创建了一个UIView,并将其宽度设置为等于滑块的宽度,并使其角部得以保留。

对于minView,我创建了一个UIView,它的前导等于滑块的前导,尾随应等于拇指的中心。

ios - UISlider的minView超出了其范围和拇指的中心-LMLPHP

这是我所做的逻辑。

func changeValue() {
    let difference = slider.maximumValue - slider.minimumValue
    let thumbWidth = CGFloat(44/2)
    let scale = (slider.frame.size.width-thumbWidth)/CGFloat(difference)
    let width = scale * CGFloat(slider.value)
    minSlideWidth.constant = width
    self.view.layoutIfNeeded()
}


但是minView的宽度不会随着拇指的中心增加或减小。如果您看到图像,它已经超过了UIslider的拇指。

ios - UISlider的minView超出了其范围和拇指的中心-LMLPHP

最佳答案

这种方法怎么样?

配置UISlide control的属性。


setMinimumTrackImage带有8pt图像。
setMaximumTrackImage带有4pt图像。


轨道图像可以通过stretchable image重新创建,以保持圆角。您可以在UIImage referenceDefining a Stretchable Image部分中找到它。对于滑动条的跟踪图像非常有用。

10-08 05:29