我已经创建了一个名为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)
}
}
但是,当我选择一个按钮时,所有的背景都变为白色。
最佳答案
rgb值必须是0
和1
之间的浮点。你只需要把所有参数除以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中的A
switch
在默认情况下不会失败,因此您可以省略break
s。如果您明确需要此行为,则有一个fallthrough
关键字。