4.11 如何为视图添加手势识别

任何 SwiftUI 视图都可以添加手势识别,并且这些手势识别可以依次附加闭包函数,在识别触发后依次调用。

首先,创建一个图片视图,接着添加 TapGesture 这个点击识别,然后添加一个 onEnded 闭包函数,顾名思义在点击结束的时候触发,函数美触发一次都会变大图像,代码如下

struct ContentView : View {
    @State private var scale: Length = 1.0

    var body: some View {
        Image("example-image")
            .scaleEffect(scale)

            .gesture(
                TapGesture()
                    .onEnded { _ in
                        self.scale += 0.1
                    }
            )
    }
}

接着我们换成一个长按动作识别 LongPressGesture,并添加 minimumDuration 参数,意思是长按图片两秒会触发回调函数,代码如下

Image("example-image")
    .gesture(
        LongPressGesture(minimumDuration: 2)
            .onEnded { _ in
                print("Pressed!")
        }
    )

最后说下 DragGesture 这个拖动手势,当用户按下视图并且拖动一定距离的时候,会触发回调函数。添加 minimumDistance 参数,代码如下:

Image("example-image")
    .gesture(
        DragGesture(minimumDistance: 50)
            .onEnded { _ in
                print("Dragged!")
            }
    )

更多手势,请查看 Apple 文档 SwiftUI Gestures