Как вернуть скрин в исходное состояние после использования .onTapGesture? SwiftUI

У меня есть задание: сделать анимацию контура круга, который увенчивается и возвращается к исходному размеру и одновременно с этим его наполнение сокращается пока контур круга полностью не исчезнет и с этим проблемы у меня нет, это работает. Одновременно с началом анимации у меня должен поменяться еще несколько параметров, в том числе цвет бекграунда всего вью, с этим тоже проблем нет. Но вот к концу анимации задание требует, чтобы ряд измененных параметров вернулся в исходное состояние, то есть состояние круга и цвет фона вернулись в тот же вид что и до активации анимации. Я принял решение реализовать все через .onTapGesture, после касания к елементу запускается анимация, меняется цвет фона вью, но вот как вернуть эти параметры назад после изменения я уже не понимаю, подскажите как быть?

import SwiftUI

struct Stack: View {

@State private var fill: CGFloat = 1.0
@State private var scale: CGFloat = 1.0
@State private var bacgroundColor: Color = .white

var body: some View {
    ZStack {
        Color(uiColor: UIColor(bacgroundColor)).edgesIgnoringSafeArea(.all)
        ZStack{
            Circle()
                .stroke(Color(asset: Asset.Colors.secondaryActionButtonBackgroundColor), style: StrokeStyle(lineWidth: 16, lineCap: .round))
            
            Circle()
                .trim(from: 0.001, to: self.fill)
                .stroke(Color(.blue), style: StrokeStyle(lineWidth: 16, lineCap: .round))
                .rotationEffect(.degrees(-90))
                .animation(.linear(duration: 9))
        }
        .scaleEffect(scale)
        .padding(.horizontal, 106)
    }
    .onTapGesture {
        self.bacgroundColor = .green
        self.fill -= 1.0
        let baseAnimation = Animation.easeInOut(duration: 1.0)
        let repeated = baseAnimation.repeatCount(9, autoreverses: true)
        withAnimation(repeated) {
            self.scale = 1.5
        }
    }
}}

struct Stack_Previews: PreviewProvider {
static var previews: some View {
    Stack()
}
}

Как мне после завершения анимации вернуть значение self.bacgroundColor, self.fill и self.bacgroundColor к их изначальным значениям после однократного нажатия на .onTapGesture?


Ответы (0 шт):