Как остановить анимацию представления при отображении в SwiftUI? - PullRequest
4 голосов
/ 13 июля 2020

Я анимирую представление в SwiftUI, и оно анимируется сразу, когда оно появляется, даже если у меня его нет в методе .onAppear (). Я хочу, чтобы анимация отображалась только при нажатии текста, поэтому я использую жест касания. Вот мой код:

struct ContentView: View {
     var body: some View {
          Text()
             .scaleEffect(cardTap ? 0.9 : 1)
                .gesture(LongPressGesture().onChanged { value in
                    self.cardTap = true
                    DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
                        self.cardTap = false
                        UIImpactFeedbackGenerator(style: .soft).impactOccurred()
                    }
                    }
            ).animation(.spring(response: 0.5, dampingFraction: 0.5, blendDuration: 0))
     }
}

1 Ответ

3 голосов
/ 13 июля 2020

Вы можете ограничить запуск анимации, указав только значение c, как в примере ниже

Text()
 .scaleEffect(cardTap ? 0.9 : 1)
    .gesture(LongPressGesture().onChanged { value in
        self.cardTap = true
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
            self.cardTap = false
            UIImpactFeedbackGenerator(style: .soft).impactOccurred()
        }
        }
)
.animation(.spring(response: 0.5, 
    dampingFraction: 0.5, blendDuration: 0), value: cardTap)  // << here !!
...