我有一个页面上有一堆按钮的视图。每个按钮都使用我添加到资产文件夹中的一本书的图像。在我的按钮上,我有一些关于 .onLongPressGesture 修饰符的代码,它基本上会在单击时改变图像的比例。因此,当您单击“书籍按钮”时,它会放大一点,然后在单击完成后缩小回原来的大小。
我遇到的问题是,当我单击我的按钮时,它会将按钮从其原始颜色变灰并保持这种状态,直到单击操作完成。我猜它是某种默认的东西,所以用户知道它点击了按钮。无论如何要禁用它以便按钮/图像的颜色/不透明度在整个点击过程中保持不变?
Button(action: {
}, label: {
Image("book_Fotor")
.resizable()
.scaledToFit()
.frame(width: 70, height: 85)
}).scaleEffect(pressed ? 1.25 : 1.0)
.onLongPressGesture(minimumDuration: 2.5, maximumDistance: .infinity, pressing: { pressing in
withAnimation(.easeIn(duration: 0.75)) {
self.pressed = pressing
}
}, perform: { })
struct CustomButtonStyle: ButtonStyle {
func makeBody(configuration: Configuration) -> some View {
configuration.label
.padding()
.background(configuration.isPressed ? Color.blue : Color.green)
.foregroundColor(.white)
.cornerRadius(10)
}
}
Button(action: {
// Add your button action here
}) {
Text("My Button")
}
.buttonStyle(CustomButtonStyle())
你可以尝试写自己的风格
只是不要使用
Button
并在图像本身上使用简单的 onTapGesture
修饰符:
Image("book_Fotor")
.resizable()
.scaledToFit()
.frame(width: 70, height: 85)
.scaleEffect(pressed ? 1.25 : 1.0)
.onTapGesture {
print("Tap") // <- 👈 Here is the Tap Action
}
.onLongPressGesture(
minimumDuration: 2.5,
maximumDistance: .infinity,
pressing: { pressing in
withAnimation(.easeIn(duration: 0.75)) {
self.pressed = pressing
}
}
) {
print("Long")
}