如何阻止视图在 SwiftUI 中出现动画?
Posted
技术标签:
【中文标题】如何阻止视图在 SwiftUI 中出现动画?【英文标题】:How to stop a view from animating on appear in SwiftUI? 【发布时间】:2020-07-13 09:03:44 【问题描述】:我正在为 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))
【问题讨论】:
我无法复制。您最初是否将cardTap
设置为 true?
【参考方案1】:
您可以将动画限制为仅由特定值触发,如下例所示
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 !!
【讨论】:
以上是关于如何阻止视图在 SwiftUI 中出现动画?的主要内容,如果未能解决你的问题,请参考以下文章
在 SwiftUI 中将视图添加到层次结构时如何动画过渡