使用自定义UIImage设置为UIImageRenderingModeAlwaysTemplate的UISlider

3

我正在尝试通过设置自定义图像来定制UISlider的外观,其中包括拇指、最小轨道和最大轨道,如下所示:

let sliderThumbImage = UIImage(named: "slider-thumb")
volumeSlider.setThumbImage(sliderThumbImage, forState: .Normal)
let minTrackImage = UIImage(named: "slider-min-track")
volumeSlider.setMinimumTrackImage(minTrackImage, forState: .Normal)
let maxTrackImage = UIImage(named: "slider-max-track")
volumeSlider.setMaximumTrackImage(maxTrackImage, forState: .Normal)

这个功能可以正常使用。

然而,我想将这些图片设置为模板图像,通过将它们的渲染模式设置为UIImageRenderingModeAlwaysTemplate

问题在于,如果我这样设置tintColor:

volumeSlider.thumbTintColor = UIColor.greenColor()

然后自定义图像被移除,再次使用默认图像。
如何同时自定义图像和tintColor?
编辑:文档似乎支持我遇到的问题:
请注意,您只能调整默认轨道和拇指图像的色调,而不能调整具有自定义图像的滑块部分的色调。设置具有自定义图像关联的部分的色调将删除这些图像。
来源:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/UIKitUICatalog/UISlider.html

如果文档说你不能这样做,那么你就不能这样做,至少没有黑客的帮助。你可以始终创建自己的自定义滑块,或从通过Google搜索获得的大量控件中选择一个。 - Beau Nouvelle
1个回答

2
如果您在UISlider本身上设置了色调颜色,它将更改自定义拇指图像的色调。 volumeSlider.tintColor = .green 但是,您需要创建具有始终模板呈现模式的拇指图像。这可以通过资源管理器或代码完成。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接