我尝试在点击手势开始和结束时添加操作,但它不起作用!并给出示例代码。
@State private var opacity = 1.0
var body: some View {
Image(systemName: "plus.square.on.square")
.opacity(opacity)
.onTapGesture {
opacity = 0.2
}
.gesture(
TapGesture()
.onEnded({ _ in
opacity = 1.0
})
)
}
@TusharSharma 非常接近,除了使用
onLongPressGesture
来精确检测手势的开始和结束时,只有 onPressingChanged
块很重要。
这是一个基于相关代码的工作示例:
var body: some View {
Image(systemName: "plus.square.on.square")
.opacity(opacity)
.onLongPressGesture(minimumDuration: .infinity) {
// Do nothing as an action, only the state change matters.
} onPressingChanged: { starting in
withAnimation { opacity = starting ? 0.2 : 1.0 }
}
}
@State
private var opacity = 1.0
(
withAnimation
部分是可选的,但我想你会想要它作为你的例子。)
minimumDuration: .infinity
当用户按住按键时,在整个持续时间内“保持”不透明度为 0.2。