我试图阻止按钮在单击时出现动画,但我没有成功。
我尝试将
UIButton.appearance().isHighlighted
、.adjustsImageWhenHighlighted
和 .showsTouchWhenHiglighted
设置为 false
。我也尝试过:
Button(action: {}) {
Text("X")
}
.animation(.none)
我认为解决这个问题的最纯粹的方法是不使用
Button
。
相反,你可以这样做:
Text("X")
.onTapGesture {
print("clicked!")
}
几乎,要在某些地方禁用动画,我们应该设置
nil
,例如
Button(action: {}) {
Text("X")
}
.animation(nil) // << here !!
使用 Xcode 12.1 / iOS 14.1 进行测试
如果您无法以其他方式使其工作,您可以禁用该按钮并为其附加点击手势识别器。
禁用它的最佳方法是提供不包含默认点击动画的自定义原始按钮样式。这是完成此操作的代码:
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 中的默认按钮单击动画