swift - 如何停止动画出现在 SwiftUI 中的 View ?

标签 swift animation swiftui

我正在 SwiftUI 中为 View 设置动画,即使我在 .onAppear() 方法中没有它,它也会在 View 出现时立即设置动画。我希望它只在我按下文本时才动画,这就是我使用点击手势的原因。这是我的代码:

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

最佳答案

您可以限制动画仅由特定值触发,如下例所示

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

关于swift - 如何停止动画出现在 SwiftUI 中的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62872586/

相关文章:

ios - 使用 aCoder 编码时出现 Swift PFFile 异常

swift - TraitCollectionDidChange 对于 iphone X 的行为有所不同

android - 动画不流畅

ios - 当您点击另一个 TextField 时,如何获取要更新的 TextField 的绑定(bind)值?

swift - 如何制作水平滚动的 2 行多列 UICollectionView

wpf - 动画结束后关闭 WPF 窗口

html - 悬停时图像不会旋转

ios - 更改UIButton内的SF符号大小

ios - SwiftUI 中默认展开的 List 或 OutlineGroup

ios - UIAlertController 和 displayShareSheet 在 iPad 上崩溃