Swift 点击图像快捷界面上的动画
如何在图像上制作动画,以便当我点击并按住它时向后缩放,当我释放它时,图像返回到其原始大小Swift 点击图像快捷界面上的动画,swift,image,animation,swiftui,gesture,Swift,Image,Animation,Swiftui,Gesture,如何在图像上制作动画,以便当我点击并按住它时向后缩放,当我释放它时,图像返回到其原始大小 struct ContentView: View { var body: some View { Image(systemName: "heart") .onTapGesture { // Gesture when held down and released } } } 下面是一个可能的解决方案演示。使用
struct ContentView: View {
var body: some View {
Image(systemName: "heart")
.onTapGesture {
// Gesture when held down and released
}
}
}
下面是一个可能的解决方案演示。使用Xcode 12/iOS 14进行测试
不错。我甚至不知道
@GestureState
属性包装器存在。谢谢这很好,唯一的问题是它有点慢…我如何加快动画速度?@xmetal更改动画部分,例如.animation(.easeInOut(duration:0.3))
@pawello2222我刚刚意识到这里可能会改变的是长按手势。我尝试使用TapPassive,因为我需要在单击图像时立即查看动画,但如果这样做,则会丢失scaleEffect动画so@xmetal,Tapperstation是瞬时的,因此不适用于您的情况。尝试将长按手势(minDuration:)
调整为更新状态,以及任何其他修改器,如上述动画。
struct DemoImageScale: View {
@GestureState private var isDetectingPress = false
var body: some View {
Image("plant")
.resizable().aspectRatio(contentMode: .fit)
.scaleEffect(isDetectingPress ? 0.5 : 1)
.animation(.spring())
.gesture(LongPressGesture(minimumDuration: 0.1).sequenced(before:DragGesture(minimumDistance: 0))
.updating($isDetectingPress) { value, state, _ in
switch value {
case .second(true, nil):
state = true
default:
break
}
})
}
}