如何在 Swift3 中更改一组按钮图像的颜色?

Posted

技术标签:

【中文标题】如何在 Swift3 中更改一组按钮图像的颜色?【英文标题】:How can I change a group of button's image's colors in Swift3? 【发布时间】:2017-01-05 05:21:25 【问题描述】:

我最近问了一个问题here,我想了解如何更改buttonimageUIColor。我遵循了@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

您也可以创建UIButtonextension 并将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 UI中点击按钮时如何更改背景颜色和图像?

Swift 3:UIImage 设置为模板图像并更改色调颜色时不显示图像

在 Swift 3 中突出显示(或点击)按钮时如何更改 UIButton 边框颜色?

通过触摸按钮 Swift 3 更改 UIButton 文本标签颜色

如何在Android中更改颜色的地图选择?