UISlider - 将线条/图像绘制到轨道(条形图)

Posted

技术标签:

【中文标题】UISlider - 将线条/图像绘制到轨道(条形图)【英文标题】:UISlider - draw line / image to the track (bar) 【发布时间】:2014-09-08 15:40:28 【问题描述】:

我有UISlider 的最小和最大轨道颜色。我想在滑块轨道的中间绘制垂直线(或图像)。这条线必须一直存在,只有它上面的颜色会不同(最小/最大轨道颜色)。

如果我将 UIImage 放在 Slider 背景上,轨道会覆盖它。如果我为曲目设置了清晰的颜色,我可以看到线条,但没有来自曲目的颜色(显然)。有什么简单的方法,怎么做,或者我必须重写 Slider 的 drawRect 方法?

图片中的滑块上的东西

【问题讨论】:

有很多关于创建自己的滑块子类的教程。你有什么理由试图避免覆盖drawRect?它并不困难,而且比试图覆盖外部的东西更优雅,更不容易破损。 我想我会这样做。这可能是最好的方法。 查看此link 将有助于自定义您的滑块。 【参考方案1】:

请注意,此类项目的“终极”解决方案是……

http://www.paintcodeapp.com

正如@BradAllred 所指出的,这里的根本问题是:你试图避免 drawRect

实际上,您只能通过继承 UIControl 或滑块来实现您的目标。

正如其他人所提到的,幸运的是,有很多很棒的教程等,可以做到这一点——而且并不难。

paintcodeapp.com 再次成为制作 ios 应用的“不可思议的秘诀”,尽情享受吧。

【讨论】:

谢谢,不知道这个。它帮助了我 如果你指的是paintcode,它是一个了不起的产品嗯!享受。【参考方案2】:

添加一个 1 像素宽且具有 Slider 高度的 UIView 并将其放在滑块上。

【讨论】:

是的..这也是我的想法之一。但是这样,我在滑块拇指前面有 UIView 在滑块委托中检查滑块何时处于 50% 并使视图对其他所有人不可见 % 使其可见。这是唯一简单的解决方案。【参考方案3】:

创建一个 CALayer,绘制它,(甚至添加图像),然后将该层作为子层添加到 Slider 的 layer.contents。

【讨论】:

以上是关于UISlider - 将线条/图像绘制到轨道(条形图)的主要内容,如果未能解决你的问题,请参考以下文章

当滑块按钮超过最大值的 60% 时,UISlider 最大轨道图像使用最小轨道图像

具有清晰背景的 UISlider 拇指图像在其后面显示轨道

在透明拇指图像后面隐藏 UISlider 轨道

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

自定义 UISlider(跟踪图像高度)

如何在不移动滑块拇指色调的情况下将多种颜色应用于uislider轨道?