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

Posted

技术标签:

【中文标题】如何在自定义 UISlider 中在滑块值 0 之前和滑块值 100 之后提供填充【英文标题】:How to give Padding before slider value 0 and after slider value 100 in custom UISlider 【发布时间】:2013-11-08 07:58:54 【问题描述】:

我需要一个自定义滑块,如下所示

我需要在一些填充后启动我的滑块,并且在滑块到达结束后需要相同的填充,即滑块值 100,通过填充相同的滑块的最大和最小轨道图像,即使在这个填充区域中,如上图所示。

换句话说,Slider 必须在一些填充之后虚拟开始并在一些填充值之前结束。 如何做到这一点?提前感谢任何帮助。

【问题讨论】:

所以如果我直接读你的话,实际的最小值和最大值仍然分别是 0 和 100? @nickfalk 是的,但是我的值 0 必须在如图所示的小填充之后开始,而 100 是最大值需要在一些填充之前结束 除非我误解了您要实现的目标,否则听起来并不难:滑块的值实际上可以低于 0 和高于 100,但您只需将实际值四舍五入.除此之外,它“只是”一个问题,即找到您需要扩展它的滑块范围的百分比。例如,实际的滑块是否会从 -10 到 110... @nickfalk 我可以做到,但我的要求是滑块必须从 pt 开始。 0 并且必须在 pt 处结束。 100, 1)最初如果假设滑块值在 0 之前加载时为 0,一些粉红色的填充图像也应该是可见的,并且 2)当假设用户将滑块移动到 100 时,一旦它达到 100,则必须填充 100 文本之后的其余空间那种粉红色。 我可能很愚蠢,但如果这是一个自定义组件,您仍然可以按照我描述的方式实现它。但是,您必须处理一组值:一个用于滑块的内部设置,涵盖 0-100 之外的值,以及一个在该范围内返回的外部值。如果您检查内部值,则可以在外部最小值和最大值之外将其设置为最小值或最大值。 【参考方案1】:

关键是提供一个映射函数,将值转换为滑块设置,反之亦然。因此,您永远不会直接使用滑块值,而只能使用映射值。

您将左侧的值设置为 -10,将右侧的值设置为 110。映射 f 对于值 = 100 返回 100,而实际值对于 ant thing 其他。

【讨论】:

以上是关于如何在自定义 UISlider 中在滑块值 0 之前和滑块值 100 之后提供填充的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式更改 UISlider 拇指图像的大小

iOS,在滑块值 n 处触发一次 UIViewAnimation?

如何将 iOS 滑块值限制为整数?

Firestore - UITableViewCell 内的 UISlider

处理多个 UISlider

如何获取给定值沿 UISlider 的位置?