SwiftUI | Gesture 제스쳐. Tap, LongPress, MagnificationGesture

Tap = 가장 많이 사용되는 한 번 터치.
LongPress = 오래 누르고 있는 터치.
MagnificationGesture = 사진을 확대, 축소할 때 사용되는 터치. (= 핀치)

struct ContentView: View {
    var body: some View {
        Image("펭수")
            .onTapGesture(perform: didTapImage)
            .onLongPressGesture(perform: didLongPressImage)
    }

    private func didTapImage() {
        print("펭하")
    }

    private func didLongPressImage() {
        print("펭 ~~~~~~~~ 하")
    }
}

– 간단ver.


struct ContentView: View {
    var body: some View {
        let tapGesture = TapGesture(count: 3).onEnded(didTapImage)
        let longGesture = LongPressGesture().onEnded(didLongPressImage)
        let magnificationGesture = MagnificationGesture().onChanged(didMagnificationGestureOnImage)

        return Image("펭수")
            .gesture(tapGesture)
            .gesture(longGesture)
            .gesture(magnificationGesture)
    }

    private func didTapImage() {
        print("펭하")
    }

    private func didMagnificationGestureOnImage(at: CGFloat) {
        print("펭/하-!")
    }

    private func didLongPressImage(isFinish: Bool) {
        print("펭 ~~~~~~~~ 하")
    }
}

LongPress이거나 MagnificationGesture 일 때 조금 더 섬세하게 만질 수 있는 ver.
LongPress 에서 count 는 따로 State property 로도 관리 가능.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중