我最近问了一个问题here我想了解如何更改button
image
的{{1}}。我按照@Dorian Roy的建议进行了非常干净的工作,并且很好地满足了我的需求。虽然我之前的具体问题是围绕一个按钮,但我想知道如何更改多个UIBUttons
。可以这样做吗?我的想法是subclass
和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
}
答案 0 :(得分:3)
最简单的方法是创建一个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
}
您还可以创建extension
UIButton
并将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()
}