【问题标题】:Swift 3.0: Change a button color once pressedSwift 3.0:按下后更改按钮颜色
【发布时间】:2016-08-13 23:02:36
【问题描述】:

我创建了一个圆形绿色按钮。这是 CircularButton.swift,我在其中定义了颜色和形状,如下所示:

import UIKit

class CircularButton: UIButton {

@IBInspectable var fillColor: UIColor = UIColor.green

override func draw(_ rect: CGRect) {

    let path = UIBezierPath(ovalIn: rect)
    fillColor.setFill()
    path.fill()

    }
}

这是屏幕截图。

在按下按钮时,我想将其颜色更改为红色。我定义的函数如下:

@IBAction func circularButtonPressed(_ sender: CircularButton) {
    sender.fillColor = UIColor.red
    sender.draw(CGRect(x: 0, y: 0, width: sender.frame.width,
                       height: sender.frame.height))
}

知道为什么颜色没有变成红色吗?

注意:如果我添加以下行:

sender.backgroundColor = UIColor.white

在上述函数中,按钮颜色变为红色。

感谢您的帮助。

【问题讨论】:

标签: ios swift uibutton


【解决方案1】:

您不应直接从代码内部调用draw(_:)。 您只需要告诉 iOS 控件需要重绘即可。

删除调用draw(_:)的行:

@IBAction func circularButtonPressed(_ sender: CircularButton) {
    sender.fillColor = UIColor.red
}

并将观察者添加到fillColor 属性:

@IBInspectable var fillColor: UIColor = UIColor.green {
    didSet(oldColor) {
        if fillColor != oldColor {
            self.setNeedsDisplay()
        }
    }
}

【讨论】:

  • 非常感谢。这就是我一直在寻找的。​​span>
猜你喜欢
  • 2015-10-01
  • 2020-04-20
  • 2019-06-28
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多