如何阻止视图动画显示在SwiftUI中?

时间:2020-07-13 09:03:44

标签: swift animation swiftui

我正在对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 个答案:

答案 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 !!