The Util Designer
SwiftUI 學習Gesture - 點按手勢TapGesture
xcode 13.4.1, swift 5.5, iOS 15.4
2022-08-23
Gesture是使用者與App交互的主要途徑,包括點按(Tap)、長按手勢(Long Press)、拖曳手勢(Drag)、縮放手勢(MagnificationGesture)、旋轉手勢(RotationGesture),這次先講講點按(Tap)。
1. 只要在View上加上gesture方法,需傳入點按手勢TapGesture,並在onEnded的closure內通過改變isPressed來控制opacity。
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(
                TapGesture()
                    .onEnded({
                        isPressed.toggle()
                    })
            )

    }
}
2. 點按手勢TapGesture默認是點按一次,也可以點按多次,比如下面實作是點按2點。
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(
                TapGesture(count: 2)
                    .onEnded({
                        isPressed.toggle()
                    })
            )

    }
}