绘图动画在Swift中不起作用

问题描述 投票:0回答:1

Screenshot

我创建了一个自定义UIButton类,在其中用一种颜色填充了其中的颜色,但仅部分填充了它。

目标:目的是在按钮内部填充背景颜色,但仅部分填充。例如,您有一个长按钮(高度:50.0,宽度:300.0)。我想水平填充背景色,比如说只填充50%。在这种情况下,我按钮的只有一半将充满颜色,另一半将保持透明或白色。

整个类看起来像这样:

class CustomButton: UIButton {

    var color: UIColor = .clear
    var percentage: CGFloat = 0

    func fill(withPercentage percentage: CGFloat, isCorrect correct: Bool, onRect rect: CGRect) {
        self.color = correct ? .lightishGreen : .pastelRed
        self.percentage = percentage

        draw(rect)
    }

    override func draw(_ rect: CGRect) {
        super.draw(rect)

        let fillRect = CGRect(
            origin: CGPoint(x: rect.origin.x, y: rect.origin.y),
            size: CGSize(width: rect.size.width * percentage, height: rect.size.height)
        )
        color.set()

        guard let context = UIGraphicsGetCurrentContext() else { return }
        context.fill(fillRect)
    }
}

并且该课程非常好。但是,我想为该绘制过程设置动画,因此按钮的背景色可以从0.0到1.0填充。

我尝试将context.fill(fillRect)放在UIView.animate(){}内,但没有用。所以我想知道是否可以为绘图设置动画?

我只是不想使按钮bg的颜色清晰,并在其后放置UIView并模拟在那里的填充。想要一种干净的方法。因此,如果有人可以给我提示或告诉我如何操作,我会很高兴。预先感谢!

屏幕快照,我创建了一个自定义UIButton类,在其中我用一种颜色填充了它的内部颜色,但仅部分填充了它。目标:目标是在按钮内部填充背景颜色,但仅...

ios swift uiviewanimation
1个回答
0
投票

在我看来,您需要自定义动画属性。我们称它为percentage。这是一种方法:

© www.soinside.com 2019 - 2024. All rights reserved.