我的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)
我的滑块如下所示:
它运作良好,表现得像人们期望的那样行为
现在我想让拇指之前的部分有不同的颜色,之后的部分也有不同的颜色,所以我创建了一个函数,它从我用于视图的图像中创建新图像作为模板(模板是一个数组):
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
其中颜色是包含四种不同颜色的结构。但是你可以看到它无法正常工作
图像拇指被设置为默认值,它甚至表现不正常,因为我无法将拇指移动到滑块的0.0位置,在我移动它或颜色改变后,拇指后的部分变为蓝色滑块的默认颜色。
我尝试了不同的方法来解决这个问题,但这是我最接近正常工作的方法。在这一点上,我开始认为这是一个错误,但也许我在我的代码中犯了一些错误。正如我所说,我有按钮,标签,我的颜色与我在这里尝试的颜色相同
button.setImage(templates[7], forState: .normal)
button.tintColor = colors.primaryColor
它有效 我做错了什么?
答案 0 :(得分:1)
来自UISlider thumbTintColor
的文档:
设置此属性会将拇指图像重置为滑块的默认图像;滑块释放任何自定义图像。将此属性设置为nil会将色调颜色重置为默认值,并删除所有自定义拇指图像。
两个轨道色调相同。
如果您想要自定义图像,则只需设置自定义图像而不设置色调。
换句话说,设置自定义图像或设置色调。不要同时设置。