在 SwiftUi 中禁用默认按钮单击动画

Disable default button click animation in SwiftUi

如何在 SwiftUI 和 Swift 5 中禁用默认的按钮点击动画?我尝试将 .animation(.nil) 添加到按钮,没有任何更改。

我知道您可以执行以下操作:

Button(action: {}) { Capsule() }
.buttonStyle(NoAnim())

struct NoAnim: ButtonStyle {
func makeBody(configuration: Self.Configuration) -> some View {
    configuration.label
}

有人知道更聪明的方法吗?

如果我正确理解了你的问题,那么最好只使用

Capsule()
  .onTapGesture {
    // << action here !!
  }

iOS 13.x, Swift 5.

所以您想要的是可点击的东西,而不是按钮。只需使用带有 onTapGesture 的标签,然后您就可以添加任何您喜欢的动画。

或者,您也可以像这样使用 onDrag 手势。这将在您触摸它时立即更新 dragLocation。所以它就像触摸事件。它也没有任何喜欢的动画。如果您愿意,可以添加。

Text("Hello World")
.accessibility(label: Text("Button"))
.gesture(
    DragGesture(minimumDistance: 5, coordinateSpace: .global)
        .onChanged { value in
          self.dragLocation = value.location
        }
        .onEnded { _ in
          self.dragLocation = .zero
        }
)