自定义 UISlider 多了一个视图

Posted

技术标签:

【中文标题】自定义 UISlider 多了一个视图【英文标题】:Customized UISlider with one more view 【发布时间】:2017-06-12 17:02:41 【问题描述】:

我需要在 swift 中创建 UISlider 的子类,以便它具有 3 个条形视图和 1 个拇指图像。目前 ios 仅提供 2 个条形视图和 1 个缩略图。

两个条形视图是 minimumTrackImage 和 maximumTrackImage。

我需要在右侧多一个条形视图,这是 UISlider 的允许限制。即如果滑块的当前值为 50,则最大允许值为 100。我可以将允许限制设置为 80,滑块将如下所示。

谁能帮忙...

【问题讨论】:

既然你不能轻易拥有三个轨道图像,你能用两个吗?你的minimumTrackImage 是纯绿色,这很好。让你的maximumTrackImage 更有活力……在你的情况下,是白色的,里面有一个灰色的条。如果需要,不确定如何使用自动布局......但是创建一个白色背景的图像,灰色条的宽度为 80%,这很容易制作。 【参考方案1】:

这是我快速整理的一个示例,希望能显示您的需求(请参阅下面的 github-link)....

Link to the example "permissibleLimitSlider" on GitHub (解决方案使用 Swift-3.1、Xcode-8.3.3 和 iOS-Simulator-10.0 完成)

诀窍是:

A) 创建一个新的 maximumTrackImage(在我的示例中称为“滑块轨道”)。我在 Photoshop 中创建了该图像(但您可以使用不同的图形程序)。

B) 将您的 Storyboard-Slider 中的 IBAction(带有事件“ValueChanged”)添加到 MyViewController。在这种方法中,您只需观察 sender.value 并将其限制为 0.8

这就是我的 github 示例中的样子: 随意更改项目中的 Asses-images 来更改颜色!

希望这个静态限制(0.8)是您所需要的。如果您需要动态限制(可在代码中设置),我建议您提供 10 张图像,使 Slider 成为“离散滑块”,并在需要时将您的 maximumTrackImage 设置为一个或另一个图像...

有关如何使您的滑块成为离散滑块的更多示例,请参见here

关于如何制作自定义滑块的非常好的教程可以找到here

【讨论】:

以上是关于自定义 UISlider 多了一个视图的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 - 自定义 UISlider 设计不起作用

.xib 中的垂直 UISlider 用于自定义类?

在ios中自定义progressview / UISlider

ios画外音滑块双击并按住,但用于自定义视图

自定义 UISlider(无需编写自定义代码)

给 UISlider 进度条圆角 [Swift]