我想要一个自定义滑块,要求的是minView的高度应为8 pt&maxView的高度应为4 pt,这是可见的角应为圆形。
我将滑块的最小和最大图像作为清晰的alpha图像设置为0.0
对于maxView,我创建了一个UIView,并将其宽度设置为等于滑块的宽度,并使其角部得以保留。
对于minView,我创建了一个UIView,它的前导等于滑块的前导,尾随应等于拇指的中心。
这是我所做的逻辑。
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的拇指。
最佳答案
这种方法怎么样?
配置UISlide control的属性。setMinimumTrackImage
带有8pt图像。setMaximumTrackImage
带有4pt图像。
轨道图像可以通过stretchable image重新创建,以保持圆角。您可以在UIImage reference的Defining a Stretchable Image
部分中找到它。对于滑动条的跟踪图像非常有用。