Снимок экрана
Я создал собственный класс 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(){}
, но это сработало не работает. Я подумал, а можно ли анимировать рисунок?
Я просто не хочу, чтобы цвет кнопки был прозрачным, а за ним помещал UIView и имитировал заливку. Хотел чистый путь. Так что буду рад, если кто-нибудь подскажет или покажет, как это сделать. Заранее спасибо!