我已经创建了一个名为RegistrationButton的自定义UIButton。我正在尝试允许用户在三个按钮之间进行选择。当选择一个按钮时,背景颜色和文本将改变。
下面是IBAction的外观:

  @IBAction func didTapBUtton(_ sender: UIButton) {


  switch sender {
    case studentButton:
        studentButton.selected()
        professionalButton.notSelected()
        entrepreneurhsip.notSelected()
        break
    case professionalButton:
        studentButton.notSelected()
        professionalButton.selected()
        entrepreneurhsip.notSelected()
        break
    case entrepreneurhsipButton:
        studentButton.notSelected()
        professionalButton.notSelected()
        entrepreneurhsip.selected()
        break
    default:
        break
    }
}

下面是我的自定义UIButton类:
import UIKit

class RegistrationButton: UIButton {


override func awakeFromNib() {
    super.awakeFromNib()
    addBorder()

}

required init(coder:NSCoder) {
    super.init(coder:coder)!
}

func addBorder(){
    self.layer.borderColor = UIColor.white.cgColor
    self.layer.borderWidth = 1
}

func selected(){
     self.backgroundColor = .white

    self.setTitleColor(UIColor(red:67,green:204,blue:144,alpha:1), for: .normal)
}
func notSelected(){

    self.backgroundColor = UIColor(red:67,green:204,blue:144,alpha:1)


    self.setTitleColor(UIColor.white, for: .normal)
}

}
但是,当我选择一个按钮时,所有的背景都变为白色。
ios - 如何更改在IBAction中注册的自定义UIButton的颜色?-LMLPHP

最佳答案

rgb值必须是01之间的浮点。你只需要把所有参数除以255就可以了。
例如

self.backgroundColor = UIColor(red:67,green:204,blue:144,alpha:1)

应该是
self.backgroundColor = UIColor(red: 67.0/255, green: 204.0/255, blue:144.0/255, alpha:1)

(当您应用标题颜色时,显然也是如此)
旁注:Swift中的Aswitch在默认情况下不会失败,因此您可以省略breaks。如果您明确需要此行为,则有一个fallthrough关键字。

09-28 10:00