我正在对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))
}
}
答案 0 :(得分:6)
您可以将动画限制为仅由特定值触发,如下面的示例所示
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 !!