Swift更改UISlider图像和色调无法按预期工作

时间:2017-10-08 12:50:36

标签: ios swift templates slider

我的ViewController中有一个滑块:

@IBOutlet weak var timeSlider: UISlider!

使用代码时:

timeSlider.setMinimumTrackImage(#imageLiteral(resourceName: "track"), for: .normal)
timeSlider.setMaximumTrackImage(#imageLiteral(resourceName: "track"), for: .normal)
timeSlider.setThumbImage(#imageLiteral(resourceName: "thumb2"), for: .normal)

我的滑块如下所示:

enter image description here

它运作良好,表现得像人们期望的那样行为

现在我想让拇指之前的部分有不同的颜色,之后的部分也有不同的颜色,所以我创建了一个函数,它从我用于视图的图像中创建新图像作为模板(模板是一个数组):

func setTemplates(){
        templates.removeAll()
        for i in 0 ..< 10{
            templates.append(playImg[i].withRenderingMode(.alwaysTemplate))
        }
    }

templates [5]与“thumb2”相同的图像

templates [6] =“track”

然后我想分配模板[6](图像“轨道”转换为模板)并以与我在视图中的其他图像(如按钮)相同的方式着色,或者像这样的颜色标签等。 :

timeSlider.setMinimumTrackImage(templates[6], for: .normal)
        timeSlider.setMaximumTrackImage(templates[6], for: .normal)
        timeSlider.setThumbImage(templates[5], for: .normal)
        timeSlider.minimumTrackTintColor = colors.primaryColor
        timeSlider.maximumTrackTintColor = colors.detailColor
        timeSlider.thumbTintColor = colors.secondaryColor

其中颜色是包含四种不同颜色的结构。但是你可以看到它无法正常工作

enter image description here

图像拇指被设置为默认值,它甚至表现不正常,因为我无法将拇指移动到滑块的0.0位置,在我移动它或颜色改变后,拇指后的部分变为蓝色滑块的默认颜色。

enter image description here

我尝试了不同的方法来解决这个问题,但这是我最接近正常工作的方法。在这一点上,我开始认为这是一个错误,但也许我在我的代码中犯了一些错误。正如我所说,我有按钮,标签,我的颜色与我在这里尝试的颜色相同

button.setImage(templates[7], forState: .normal)
button.tintColor = colors.primaryColor

它有效 我做错了什么?

1 个答案:

答案 0 :(得分:1)

来自UISlider thumbTintColor的文档:

  

设置此属性会将拇指图像重置为滑块的默认图像;滑块释放任何自定义图像。将此属性设置为nil会将色调颜色重置为默认值,并删除所有自定义拇指图像。

两个轨道色调相同。

如果您想要自定义图像,则只需设置自定义图像而不设置色调。

换句话说,设置自定义图像或设置色调。不要同时设置。