2017-10-08 79 views
0

我在我的ViewController滑块不起作用:斯威夫特更改UISlider图像和色彩如预期

@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)) 
     } 
    } 

模板[5]是相同的图像作为 “的Thumb2”

模板[6] = “音轨”

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

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 

相同的,它的工作原理 我在做什么错?

回答

0

从​​文件:

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

同为两个轨道色调。

如果你想自定义图像,然后刚才设置的自定义图像,而无需还设置色调。

换言之,设置在任一自定义图像或设置色调。不要同时设置。

+0

这并不能真正解决我的问题,因为色调与屏幕上显示的图像动态匹配 – Adam

+0

如果您想要更改自定义滑块图像的色调,则需要为图像着色,然后更新滑块自定义图像。没有办法设置自定义图像和滑块的色调。 – rmaddy