[SwiftUI] DragGesture의 방향에 따라 분기하기

·

1 min read

DragGesture를 컨트롤할 때 해당 Drag의 방향에 따라서 액션을 분기하기 위해서DragGesture.Valuelocation값과 startLocation 값을 활용했다.

코드

다음의 코드에서 onEnded 함수 내에서 DragGesture.Value 값을 gesture로 받아온 뒤 location.x의 값과 startLocation.x의 값을 비교하여 방향을 구분하여 분기처리할 수 있다.

import SwiftUI

struct GestureDirectionView: View {
    @State var title: String = "Drag 해주세요"

    var body: some View {
        ZStack {
            Text(title)
        }
        .frame(maxWidth: .infinity, maxHeight: .infinity)
        .background(.bg)
        .gesture(DragGesture(minimumDistance: 10).onEnded { gesture in
            if gesture.location.x - gesture.startLocation.x > 0 {
                title = "왼쪽에서 오른쪽으로 드래그"
            } else {
                title = "오른쪽에서 왼쪽으로 드래그"
            }
        })
    }
}

#Preview {
    GestureDirectionView()
}

결과