自定义 UIImage 设置为 UIImageRenderingModeAlwaysTemplate 的 UISlider

Posted

技术标签:

【中文标题】自定义 UIImage 设置为 UIImageRenderingModeAlwaysTemplate 的 UISlider【英文标题】:UISlider with custom UIImage set to UIImageRenderingModeAlwaysTemplate 【发布时间】:2015-10-15 02:06:57 【问题描述】:

我正在尝试通过为 thumb、minimumTrack 和 maximumTrack 设置自定义图像来自定义 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 搜索获得的大量控件中选择一个。 【参考方案1】:

如果您在 UISlider 本身上设置色调颜色,它将改变您的自定义拇指图像的色调。

volumeSlider.tintColor = .green

但是,您需要创建缩略图,并将其渲染模式设置为 alwaysTemplate。这可以通过资产管理器或code 来完成。

【讨论】:

以上是关于自定义 UIImage 设置为 UIImageRenderingModeAlwaysTemplate 的 UISlider的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自定义 UIImage 作为 UITabBarItem 徽章?

在自定义 tableviewcell 中更改 UIImage

实现 UIImage 问题的所需解决方案

Swift:如何将自定义 UICollectionViewCell 设置为圆形?

在 Swift 中使用自定义类在数组中显示 UIImage

自定义“按下” UIBarButtonItem 背景