如何防止按钮点击时出现动画

问题描述 投票:0回答:4

我试图阻止按钮在单击时出现动画,但我没有成功。

我尝试将

UIButton.appearance().isHighlighted
.adjustsImageWhenHighlighted
.showsTouchWhenHiglighted
设置为
false
。我也尝试过:

Button(action: {}) {
   Text("X")
}
.animation(.none)
ios animation button swiftui
4个回答
3
投票

我认为解决这个问题的最纯粹的方法是不使用

Button
。 相反,你可以这样做:

Text("X")
  .onTapGesture {
    print("clicked!")
  }

1
投票

几乎,要在某些地方禁用动画,我们应该设置

nil
,例如

Button(action: {}) {
   Text("X")
}
.animation(nil)     // << here !!

使用 Xcode 12.1 / iOS 14.1 进行测试


0
投票

如果您无法以其他方式使其工作,您可以禁用该按钮并为其附加点击手势识别器。


0
投票

禁用它的最佳方法是提供不包含默认点击动画的自定义原始按钮样式。这是完成此操作的代码:

struct NoTapAnimationStyle: PrimitiveButtonStyle {
    func makeBody(configuration: Configuration) -> some View {
        configuration.label
            // Make the whole button surface tappable. Without this only content in the label is tappable and not whitespace. Order is important so add it before the tap gesture
            .contentShape(Rectangle())
            .onTapGesture(perform: configuration.trigger)
    }
}

然后将此修改器应用到按钮上:

.buttonStyle(NoTapAnimationStyle())

在此处重新发布答案:禁用 SwiftUi 中的默认按钮单击动画

© www.soinside.com 2019 - 2024. All rights reserved.