如何实现最小轨道从中心(值= 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 = .clearself.maximumTrackTintColor = .clear。然后您可以创建一个与轨道相同的width/height 的视图,并将其放在UISlider 的正下方。使用此视图,您可以将leadingConstrainttrailingConstraint 设置为在中间压缩(初始位置,当UISlider 值为0.5 时)。因此,每当UISlider 值发生变化时,您都可以重新计算约束以实现您想要的。

【讨论】:

以上是关于如何实现最小轨道从中心(值= 0)开始的滑块不离开的主要内容,如果未能解决你的问题,请参考以下文章

反应光滑的滑块不通过道具

更改曲目 NAudio 后滑块不起作用

如何识别 UISlider 的运动是从最大值到最小值,反之亦然?

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

元滑块不工作错误:$(...).flexslider 不是函数

滑块移动时删除注释 - 迅速