我想知道当我点击或突出显示时,我如何在我的UIButton
周围改变不透明度以及其中的文字。
我的逻辑告诉我,它应该是这样的......但它似乎不起作用:
//BTN STYLING
btnstd.layer.cornerRadius = 5
btnstd.layer.borderWidth = 1.5
btnstd.layer.borderColor = UIColor.white.cgColor
//Change bordercolor when highlighted
if(btnstd.isHighlighted) {
btnstd.layer.borderColor = UIColor(white:1,alpha:0.3).cgColor
}
顺便提一下我的ViewDidLoad()
函数
答案 0 :(得分:5)
我对此进行了测试,希望它能满足您的需求!或者至少指出你的方向。你正在寻找的动作(我认为)是.touchDown和任何东西.touchUp。
override func viewDidLoad() {
super.viewDidLoad()
theButton.setTitle("Normal", for: .normal)
theButton.setTitle("Highlighted", for: .highlighted)
theButton.layer.borderColor = UIColor.red.cgColor
theButton.layer.borderWidth = 1
theButton.addTarget(self, action: #selector(startHighlight), for: .touchDown)
theButton.addTarget(self, action: #selector(stopHighlight), for: .touchUpInside)
theButton.addTarget(self, action: #selector(stopHighlight), for: .touchUpOutside)
}
func startHighlight(sender: UIButton) {
theButton.layer.borderColor = UIColor.green.cgColor
theButton.layer.borderWidth = 1
}
func stopHighlight(sender: UIButton) {
theButton.layer.borderColor = UIColor.red.cgColor
theButton.layer.borderWidth = 1
}
答案 1 :(得分:0)
这取决于你想要做什么。
案例#1:您希望在突出显示按钮时发生此更改,但在正常状态下具有不同的属性集。
let theButton = UIButton()
// set common properties and layout code
theButton.setTitle("Normal", for: .normal)
theButton.setTitle("Highlighted", for: .highlighted)
此外,您还可以直接编码setTitleColor(),setAttributedTitle,setTitleShadowColor(),setImage()和setBackgroundImage()。
在这种情况下,边框颜色需要一个子类(不是扩展名,你需要公共属性),你需要在自己点击一个轻击手势后检查self.layer.hitTest()。
案例#2:您希望按钮状态在单击时更改,并保持更改。
你是那里的一部分。如果您在IB中提供按钮,请确保为事件touchUpInside添加IBAction。如果您正在使用代码,这里是Swift 3语法。
theButton.addTarget(self, action: #selector(changeButton), for: .touchUpInside)
func changeButton(sender: UIButton) {
sender.setTitle("New Title", for: .normal)
sender.layer.borderColor = UIColor.red.cgColor
}
我的偏好(但仅限于此)是为我的行为更强烈地键入发件人(我认为这是正确的术语)。我确信在AnyObject上使用特定的发送者(比如UIButton)有利有弊,但在这种情况下,我认为最大的原因是你不需要强制将发送者强制转换为UIButton。