【问题标题】:customized UIButton stays selected and changes color自定义 UIButton 保持选中状态并更改颜色
【发布时间】:2015-09-22 11:39:45
【问题描述】:

有没有办法在单击时更改自定义 UIButton 的颜色并让它保持不变直到再次单击?目前我覆盖 drawRect 来创建自定义按钮,但不知道从那里去哪里。

编辑:

class DayButtons: UIButton {

    var isPressed: Bool = false

    var color = UIColor.whiteColor()

        override func drawRect(rect: CGRect) {
        let cornerR = CGFloat(5)       
        var path = UIBezierPath(roundedRect: rect, cornerRadius: cornerR)
        color.setFill()
        path.fill()
    }
}

【问题讨论】:

    标签: ios swift uibutton


    【解决方案1】:

    不确定您在哪里设置按钮颜色,但更改按钮颜色的代码如下所示:

    yourButton.backgroundColor = UIColor.blueColor() // this would make the button color blue.
    

    您可以在viewDidLoad 中以编程方式设置按钮颜色,并在调用IBAction 时更改它。例如,您可以在 IBAction 中添加这一行:

    yourButton.backgroundColor = UIColor.redColor()
    

    您可能会发现这篇文章很有帮助:

    Change button background color using swift language

    更新

    没有看到代码,我不确定您要做什么。您可以使用以下代码更改矩形的填充: UIColor.whiteColor().setFill().

    您可以在单击按钮时重绘矩形并将颜色与Bool 联系起来。像这样的东西会进入绑定到您的按钮的IBAction 中以切换状态:

    if self.myCondition == true { 
        self.myCondition = false
        } else { 
        self.myCondition = true
    }
    

    在您用于创建矩形的代码中,您可以执行以下操作:

    if self.myCondition == true { 
        UIColor.greenColor().setFill()
        } else { 
        UIColor.redColor().setFill()
    }
    

    【讨论】:

    • 是的,但我正在更改自定义按钮,而不是按钮框架背景颜色,所以我想也许我可以在单击时重绘按钮。
    • 您是在 Interface Builder 中还是以编程方式创建按钮?您希望更改按钮的哪个方面?
    • 以编程方式,我基本上在drawRect中画了一个椭圆形矩形,我只想改变那个椭圆形矩形的颜色。
    • 感谢您的回答,我刚刚为我的 UIButton 子类添加了代码。当我按下这些按钮时,我对如何调用drawRect 有点困惑,因为每次按下它们时,它们都需要重新绘制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    • 2019-11-03
    相关资源
    最近更新 更多