【问题标题】:Swift - Change color and size of text when UIButton is tappedSwift - 点击 UIButton 时更改文本的颜色和大小
【发布时间】:2015-02-02 14:56:42
【问题描述】:

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

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

当我选择不同的按钮时,我希望新选择的按钮变为粗体并更改颜色(蓝色),而之前选择的按钮恢复正常。 (非粗体和黑色文字)

我有这些按钮向脚本发送动作。

这就是我所拥有的,我似乎无法让它工作。非常感谢您的帮助!

@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,并且它是被单击的按钮,因此从它中取出值并重置它们会起作用。我确实相信我错过了一些东西。

谢谢

【问题讨论】:

    标签: ios swift uibutton


    【解决方案1】:

    听起来你想要UIControlState.Normal

    Selected 在大多数情况下什么都不做,Highlighted 仅在您按下按钮时起作用。 在此处查看更多信息:https://developer.apple.com/library/ios/documentation/uikit/reference/uicontrol_class/index.html#//apple_ref/doc/constant_group/Control_State

    【讨论】:

    • 谢谢!它将颜色更改为黑色。在过去的一个小时里,我一直在用头撞我的显示器,但无法弄清楚这一点。谢谢!后续问题 - 当我点击一个新按钮时,如何让其他按钮变回黑色?
    • (黑色?以为你想要蓝色?)将每个按钮连接为视图控制器中的 IBOutlet 属性,当触​​发一个 IBAction 时,在该方法内部也可以根据需要更改其他按钮。可能需要一个属性来记住哪个按钮是活动按钮(例如,1-3 等的数字)。您还可以考虑使用分段控件而不是 3 个单独的按钮。
    • 我希望活动框为蓝色,非活动框为黑色。您的建议很有帮助,谢谢!
    【解决方案2】:

    也许你可以做一个变换...

    @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
    }
    

    【讨论】:

    • 感谢您的快速回答!由于我有三个按钮,我想避免为每个按钮制作两个功能。如果我不能弄清楚状态,我试试这个。似乎是一个很好的解决方案。
    • 只需为 3 个按钮保存一个数组,然后在 click 函数中遍历它们以重置它们。然后为被点击的那个设置点击状态。
    【解决方案3】:

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

    @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)
            }
        }
    

    希望会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多