如何实现最小轨道从中心(值= 0)开始的滑块不离开
Posted
技术标签:
【中文标题】如何实现最小轨道从中心(值= 0)开始的滑块不离开【英文标题】:How to implement a slider whose minimum track is begin from center(value=0) not left 【发布时间】:2016-12-12 07:06:23 【问题描述】:就是这样。
有没有什么方法可以让 UISlider 的子类实现这一点?
编辑: 也许我误导了你,但这确实是一个UI问题。
【问题讨论】:
将其最小值设置为-最大值,将其值设置为0 试试这个:***.com/a/28728163/3901620 但它不会使红色部分从拇指开始并在滑块的中心结束。它只是把拇指放在中心......@MeharoofNajeeb 将当前值设置为 0,将 max 和 min 属性设置为 +x 和 -x 看看这个,如果这就是你要找的,请告诉我。github.com/raxcat/BufferSlider 【参考方案1】:解决它。
创建 fakeThumbImageView fakeMinTrackImageView fakeMaxTrackImageView 并在thumbRectForBounds:trackRect:value:
中设置帧
覆盖setMinimumTrackTintColor:
setMinimumTrackImage:
等方法(共6个)
在初始化方法中调用super setMinimumTrackTintColor:[UIColor clearColor]
等
建议制作fakeXXXXImageView.layer.zPosition=1000
【讨论】:
【参考方案2】:首先设置minimumTrackTintColor = .clear
和self.maximumTrackTintColor = .clear
。然后您可以创建一个与轨道相同的width
/height
的视图,并将其放在UISlider
的正下方。使用此视图,您可以将leadingConstraint
和trailingConstraint
设置为在中间压缩(初始位置,当UISlider
值为0.5
时)。因此,每当UISlider
值发生变化时,您都可以重新计算约束以实现您想要的。
【讨论】:
以上是关于如何实现最小轨道从中心(值= 0)开始的滑块不离开的主要内容,如果未能解决你的问题,请参考以下文章
如何识别 UISlider 的运动是从最大值到最小值,反之亦然?
如何在自定义 UISlider 中在滑块值 0 之前和滑块值 100 之后提供填充