The Util Designer
SwiftUI 學習Gesture - Touch Down和Touch up的做法
xcode 13.4.1, swift 5.5, iOS 15.4
2022-08-23
Gesture是使用者與App交互的主要途徑,包括點按(Tap)、長按手勢(Long Press)、拖曳手勢(Drag)、縮放手勢(MagnificationGesture)、旋轉手勢(RotationGesture),但就是沒有Touch Down和Touch Up的Gesture可以直接用,以下使用拖曳手勢(Drag)來做到Touch down和Touch up的效果。
1. 拖曳手勢(Drag)主要作用是通過捕捉手勢的拖動來移動元件,因為拖曳手勢要檢測到按下、拖曳和放開手指這三個階段,所以在拖曳的階段沒有位置移動就可以利用第一個跟最一個動作來看成Touch Down和Touch up,以下實作,就可以做到Touch down(按下手指)時,圖片會變得透明一點,Touch up(放開手指)時,圖片就回復正常。

import SwiftUI

struct GestureExample : View {
    @State private var isPressed = false
    var body: some View {
        Image(systemName: "ladybug.fill")
            .foregroundColor(.green)
            .opacity(isPressed ? 0.4 : 1.0)
            .font(.system(size: 200))
            .gesture(
                DragGesture(minimumDistance: 0.0)
                    .onChanged({ value in
                        isPressed = true
                    })
                    .onEnded({ value in
                        isPressed = false
                    })
            )

    }
}