UIButton图像颜色渐变

340
我注意到,当我将一个白色或黑色的UIImage放入一个UISegmentedControl中时,它会自动着色以匹配分段控件的色调。我觉得这很酷,并且想知道是否可以在其他地方也这样做。例如,我有一堆按钮,它们具有统一的形状但颜色不同。我能否通过使用这种颜色遮罩来为它们所有设置相同的图像,然后设置一种色调或其他东西来改变它们的实际颜色,而不是为每个按钮制作一个PNG文件呢?

你能否发布你想要使用的图片以及期望结果的图片? - Pratyusha Terli
这个做法与界面构建器中的操作相同。 - Chuy47
22个回答

0
Swift 5,使用Storyboard:
确保在属性检查器中不要设置UIButton的前景色(参见图像)。 否则,如果设置了前景色,它将忽略所有编程配置!
只需让它保持默认即可。

1


0

iOS 15+

如果您有一个基于 SF 符号的 UIButton,并使用配置创建了该按钮,则可以按照以下方式在事后更新颜色:

if var config = myButton.configuration {
      let image = config.image?.applyingSymbolConfiguration(UIImage.SymbolConfiguration(paletteColors: [.systemBlue]))
      config.image = image
      myButton.configuration = config
      myButton.setNeedsUpdateConfiguration()
}

如果你想更新从应用程序资源目录中获取的按钮图像的颜色,可以尝试以下方法:

if var config = myButton.configuration {
      let image = config.image?.withTintColor(.systemBlue, renderingMode: .alwaysTemplate)
      config.image = image
      myButton.configuration = config
      myButton.setNeedsUpdateConfiguration()
}

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