首页 > 解决方案 > 如何快速更改按钮颜色和背景颜色

问题描述

所以我想在点击按钮时更改文本和边框的颜色,并在未选择时将其更改回来

这是我的代码

@objc func button_Select(_ sender: UIButton) {
    let button = sender

    if button.isSelected == true {


        button.backgroundColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
        button.layer.cornerRadius = 10
        button.layer.borderWidth = 1
        button.layer.borderColor = #colorLiteral(red: 0.9424466491, green: 0.6981263757, blue: 0.6917206645, alpha: 1)
        button.titleLabel?.textColor = #colorLiteral(red: 0.9424466491, green: 0.6981263757, blue: 0.6917206645, alpha: 1)
        button.isSelected = false

    } else {


        button.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
        button.layer.cornerRadius = 10
        button.layer.borderWidth = 1
        button.layer.borderColor = #colorLiteral(red: 0.6666666667, green: 0.6666666667, blue: 0.6666666667, alpha: 1)
        button.titleLabel?.textColor=#colorLiteral(red: 0.6666666667, green: 0.6666666667, blue: 0.6666666667, alpha: 1)

        button.isSelected = true
    }
}

但结果是当按钮被选中时,颜色不会变成粉红色,当按钮没有被选中时,按钮文本背景会变成灰色而不是白色/清晰的颜色

标签: swiftuibutton

解决方案


Use the following code...it may help you

 @objc func button_Select(_ sender: UIButton) {
    sender.tintColor = UIColor.clear
    if sender.isSelected == true {
        sender.backgroundColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
        sender.layer.cornerRadius = 10
        sender.layer.borderWidth = 1
        sender.layer.borderColor = #colorLiteral(red: 0.9424466491, green: 0.6981263757, blue: 0.6917206645, alpha: 1)
        sender.setTitleColor(#colorLiteral(red: 0.9424466491, green: 0.6981263757, blue: 0.6917206645, alpha: 1), for: .normal)
        sender.isSelected = false

    } else {

        sender.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
        sender.layer.cornerRadius = 10
        sender.layer.borderWidth = 1
        sender.layer.borderColor = #colorLiteral(red: 0.6666666667, green: 0.6666666667, blue: 0.6666666667, alpha: 1)
        sender.setTitleColor(#colorLiteral(red: 0.6666666667, green: 0.6666666667, blue: 0.6666666667, alpha: 1), for: .normal)
        sender.isSelected = true
    }
}

推荐阅读