Swift - 当UIButton被点击时改变文本的颜色和大小

5

我的主屏幕上有三个按钮。

当我选择其中一个按钮时,我希望所选按钮的文本变为粗体并更改颜色(蓝色)。

当我选择不同的按钮时,我希望新选择的按钮变为粗体并更改颜色(蓝色),并且以前选择的按钮恢复到普通状态(非粗体和黑色文本)。

我已经将这些按钮发送到脚本进行操作。

这是我的代码,但似乎无法正常工作。非常感谢您的帮助!

@IBAction func buttonOne(sender: UIButton){
    sender.setTitleColor(UIColor.blueColor(), forState: UIControlState.Highlighted)
}

我尝试使用UIControlState上的.Highlighted和.Selected,但似乎都无效。我还尝试了以下方法,但无法使其正常工作。

@IBAction func buttonOne(sender: UIButton){
    sender.titleLabel?.textColor = UIColor.blueColor()
}

我想,由于发送者是一个UIButton,并且它是被点击的按钮,因此从中获取值并重置它们应该是可行的。但我相信我还缺少一些内容。
谢谢。
3个回答

4

谢谢!它把颜色改成了黑色。我已经在撞我的显示器一个小时了,一直没能弄清楚。谢谢!不过还有一个后续问题——当我按下新按钮时,如何让其他按钮恢复为黑色? - Nate4436271
(黑色?你不是想要蓝色的吗?)在视图控制器中将每个按钮连接为IBOutlet属性,当其中一个IBAction被触发时,在该方法中也可以根据需要更改其他按钮。可能需要一个属性来记住哪个按钮是活动的(例如从1到3的数字)。您还可以考虑使用分段控件而不是3个单独的按钮。 - shim
1
我希望活动框是蓝色的,而非活动框是黑色的。你的建议非常有帮助,谢谢! - Nate4436271

2
也许你可以使用一个 transform...
@IBAction func buttonPressed(sender: UIButton) {
    sender.titleLabel!.textColor = UIColor.blueColor()
    sender.transform = CGAffineTransformMakeScale(0.8, 0.8)
}

@IBAction func buttonReleased(sender: UIButton) {
    sender.titleLabel!.textColor = UIColor.redColor()
    sender.transform = CGAffineTransformIdentity
}

感谢您的快速答复!由于我有三个按钮,我想避免为每个按钮制作两个函数。如果我无法弄清楚状态,我将尝试这种方法。看起来是个好办法。 - Nate4436271
只需在数组中保存3个按钮,并在单击函数中迭代它们以重置它们。然后设置被单击的按钮的点击状态。 - dy_

0

为所有按钮提供标签,将每个按钮的操作连接到同一个函数,并尝试以下代码:

@IBAction func butnClicked (sender : UIButton) {

    for tg in 1...2 {
        print(sender.tag)
        let tmpButton = self.view.viewWithTag(tg) as? UIButton
        if tmpButton?.tag == sender.tag {
          tmpButton?.setTitleColor(.red, for: .normal)
        } else {
           tmpButton?.setTitleColor(.gray, for: .normal)
        }
    }

希望能有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接