如何在 Swift3 中更改一组按钮图像的颜色?
Posted
技术标签:
【中文标题】如何在 Swift3 中更改一组按钮图像的颜色?【英文标题】:How can I change a group of button's image's colors in Swift3? 【发布时间】:2017-01-05 05:21:25 【问题描述】:我最近问了一个问题here,我想了解如何更改button
的image
的UIColor
。我遵循了@Dorian Roy 的建议,该建议非常干净,非常适合我的需求。虽然我之前的具体问题是围绕一个按钮,但我想知道如何更改多个UIBUttons
。这可以做到吗?我的想法是 subclass
a UIButton
并初始化它以自动更改其 image
颜色。我不能完全掌握如何做到这一点。
这是我目前执行此操作的方式,我正在寻求更优雅的解决方案。
private func changeBtnColors()
let ccStencil = creditCardBtn.imageView?.image?.withRenderingMode(.alwaysTemplate)
let planeStencil = planeBtn.imageView?.image?.withRenderingMode(.alwaysTemplate)
let towelStencil = towelBtn.imageView?.image?.withRenderingMode(.alwaysTemplate)
let carStencil = carBtn.imageView?.image?.withRenderingMode(.alwaysTemplate)
let trainStencil = trainBtn.imageView?.image?.withRenderingMode(.alwaysTemplate)
let graphStencil = graphBtn.imageView?.image?.withRenderingMode(.alwaysTemplate)
creditCardBtn.setImage(ccStencil, for: .normal)
planeBtn.setImage(planeStencil, for: .normal)
towelBtn.setImage(towelStencil, for: .normal)
carBtn.setImage(carStencil, for: .normal)
trainBtn.setImage(trainStencil, for: .normal)
graphBtn.setImage(graphStencil, for: .normal)
creditCardBtn.tintColor = UIColor.white
planeBtn.tintColor = UIColor.white
towelBtn.tintColor = UIColor.white
carBtn.tintColor = UIColor.white
trainBtn.tintColor = UIColor.white
graphBtn.tintColor = UIColor.white
【问题讨论】:
【参考方案1】:最简单的方法是创建一个UIButton
数组并循环遍历所有元素。
let buttonArray = [creditCardBtn, planeBtn, towelBtn, carBtn, trainBtn, graphBtn]
buttonArray.forEach button in
let image = button.imageView?.image?.withRenderingMode(.alwaysTemplate)
button.setImage(image, for: .normal)
button.tintColor = UIColor.white
您也可以创建UIButton
的extension
并将Button
的设置代码放在这样的函数中。
extension UIButton
func setImageWithRandringMode()
let image = self.imageView?.image?.withRenderingMode(.alwaysTemplate)
self.setImage(image, for: .normal)
self.tintColor = .white
现在只需使用 forEach
闭包调用此函数。
buttonArray.forEach button in
button.setImageWithRandringMode()
【讨论】:
以上是关于如何在 Swift3 中更改一组按钮图像的颜色?的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 Eureka Forms 更改按钮行字体颜色
Swift 3:UIImage 设置为模板图像并更改色调颜色时不显示图像
在 Swift 3 中突出显示(或点击)按钮时如何更改 UIButton 边框颜色?