如何更改在IBAction中注册的自定义UIButton的颜色?

Der*_*ive 0 interface-builder uibutton ibaction ios swift

我创建了一个名为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
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的自定义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)
}
Run Code Online (Sandbox Code Playgroud)

}

但是,当我选择一个按钮时,所有背景都变为白色. 在此输入图像描述

Kei*_*wan 6

RGB值具有之间进行浮动点01.您只需要将所有参数分开255以使其工作.

所以举个例子

self.backgroundColor = UIColor(red:67,green:204,blue:144,alpha:1)
Run Code Online (Sandbox Code Playgroud)

应该

self.backgroundColor = UIColor(red: 67.0/255, green: 204.0/255, blue:144.0/255, alpha:1)
Run Code Online (Sandbox Code Playgroud)

(当你应用标题颜色时,这同样明显适用)

旁注:switch默认情况下,Swift中的A 不会破坏,所以你可以省略breaks.如果您明确需要此行为,那么有一个fallthrough关键字.

  • 上投了反对票.即使事情的基线原因是提问者不理解如何使用UIButton,也更不需要扩展类的需求. (2认同)