UISlider 的 minView 超出了它的边界和拇指的中心
Posted
技术标签:
【中文标题】UISlider 的 minView 超出了它的边界和拇指的中心【英文标题】:UISlider's minView goes beyond it's bounds and thumb's center 【发布时间】:2018-10-12 04:28:52 【问题描述】:我想要一个自定义滑块,要求 minView 的高度应该是 8 pt,而 maxView 应该是 4 pt,可见角应该是圆角的。
我将滑块的最小和最大图像作为 0.0 的 alpha 清晰图像给出
对于 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 的拇指。
【问题讨论】:
为什么要使用附加视图?使用setMinimumTrackImage
和setMaximumTrackImage
。
我做了,圆角不好看。
你指的是哪个圆角?
Slider 的 minImage 和 maxImage 的圆角。
【参考方案1】:
这种方法怎么样?
配置UISlide control的属性。
setMinimumTrackImage
8pt 图片。
setMaximumTrackImage
4pt 图片。
stretchable image 可以重新创建轨道图像以保持圆角。您可以在UIImage reference 的Defining a Stretchable Image
部分找到它。它对于滑动条的轨迹图像非常有用。
【讨论】:
好的,我试试看,但我的逻辑有什么问题?为什么会超出拇指?你能帮帮我吗? 我想你应该通过它的方法得到滑动轨迹栏框架:trackRect(forBounds:)。控制框不等于中间轨迹栏的框。 或者,您可以通过thumbRect(forBounds:trackRect:value:) 获取拇指图像的中心。以上是关于UISlider 的 minView 超出了它的边界和拇指的中心的主要内容,如果未能解决你的问题,请参考以下文章