UIButton功能添加Tap Style

时间:2017-11-14 12:35:45

标签: ios swift uibutton

我在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来填充按钮并将文本变成白色吗?

1 个答案:

答案 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...
}