如何在SwiftUI中阻止视图出现时的动画效果?

6

我正在使用SwiftUI对视图进行动画处理。即使我没有在 .onAppear() 方法中指定,它也会在视图出现时自动执行动画。我希望只有当我点击文本时才执行动画,因此我使用了tap手势。这是我的代码:

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))
     }
}

我无法重现。你最初是否将“cardTap”设置为true? - Sweeper
1个回答

9
您可以仅限特定值触发动画,就像下面的示例中所示。
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 !!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接