我在Swift 4中编写了一个函数,它创建了一个接收UIButton
的按钮,一个颜色和一个标题字符串。我想在此功能中添加一个突出显示或点按样式,但我不确定如何。
功能:
func homeBtn(button: UIButton, color: UIColor, title: String){
button.setTitle(title, for: .normal)
button.setTitleColor(color, for: .normal)
button.titleLabel?.font = UIFont(name: "Raleway-Medium", size: 24)
button.titleLabel?.lineBreakMode = .byWordWrapping
button.titleLabel?.textAlignment = .center
button.titleEdgeInsets = UIEdgeInsetsMake(20,20,20,20)
button.layer.borderColor = color.cgColor
button.layer.borderWidth = 2
button.layer.cornerRadius = button.frame.width/2
button.layer.backgroundColor = whiteColor.cgColor
}
按钮是一个圆圈,中间居中有一个字符串,UIColor
用作轮廓。有人可以告诉我如何为此功能添加点按样式,使用相同的UIColor
来填充按钮并将文本变成白色吗?
答案 0 :(得分:1)
对于标题颜色,您可以在不添加事件的情况下轻松完成此操作。
button.setTitleColor(.white, for: .highlighted)
button.setTitleColor(.black, for: .normal)
对于背景颜色,您需要定义以下事件:
button.addTarget(self, action: #selector(touchDown(button:)), for: .touchDown)
button.addTarget(self, action: #selector(touchUpInside(button:)), for: .touchUpInside)
定义功能 - 您也可以参考其他触摸类型 - 请参阅UIControlEvents
@objc func touchDown(button: UIButton) {
guard let borderColor = button.layer.borderColor else {
return
}
button.backgroundColor = UIColor(cgColor: borderColor)
}
@objc func touchUpInside(button: UIButton) {
// Set backgroundColor for normal state...
}