IOS개발: SWIFT/6. Swift UI로 UI 개발하기

SwiftUI 제스처:TapGesture, DragGesture, LongPressGesture

_Blue_Sky_ 2024. 9. 14. 14:51
728x90
728x90

 

SwiftUI 제스처: TapGesture, DragGesture, LongPressGesture 상세 설명 및 예제

SwiftUI는 간결하고 직관적인 문법으로 UI를 구성할 수 있도록 도와주는 프레임워크입니다. 이와 함께, 다양한 제스처를 사용하여 사용자와 상호 작용하는 인터랙티브한 앱을 개발할 수 있도록 지원합니다.

오늘은 SwiftUI에서 가장 많이 사용되는 세 가지 제스처인 TapGesture, DragGesture, LongPressGesture에 대해 자세히 알아보고, 실제 예제를 통해 활용 방법을 살펴보겠습니다.

1. TapGesture (탭 제스처)

  • 정의: 화면을 탭하는 동작을 인식하는 제스처입니다.
  • 사용법:
    struct ContentView: View {
        var body: some View {
            Text("탭해보세요")
                .onTapGesture {
                    print("탭되었습니다!")
                }
        }
    }
    
     
  • 설명: 위 코드에서 onTapGesture modifier를 사용하여 Text 뷰를 탭했을 때 print("탭되었습니다!")가 콘솔에 출력되도록 구현했습니다.
  • 추가 기능:
    • count: 탭 횟수를 설정할 수 있습니다.
    • tapCount: 탭 횟수를 확인할 수 있습니다.
    • coordinateSpace: 탭이 발생한 좌표를 얻을 수 있습니다.

2. DragGesture (드래그 제스처)

  • 정의: 화면에서 객체를 드래그하는 동작을 인식하는 제스처입니다.
  • 사용법:
    struct ContentView: View {
        @State private var offset = CGSize.zero
    
        var body: some View {
            Circle()
                .fill(Color.blue)
                .frame(width: 100, height: 100)
                .offset(offset)
                .gesture(
                    DragGesture()
                        .onChanged { value in
                            self.offset = value.translation
                        }
                )
        }
    }
    
     
  • 설명: 위 코드에서 원형을 드래그하면 해당 원형이 드래그된 만큼 이동하도록 구현했습니다. onChanged modifier를 사용하여 드래그가 진행되는 동안 offset 값을 업데이트하여 원형의 위치를 변경합니다.
  • 추가 기능:
    • minimumDistance: 드래그를 인식하기 위한 최소 거리를 설정할 수 있습니다.
    • maximumDistance: 드래그를 인식하기 위한 최대 거리를 설정할 수 있습니다.

3. LongPressGesture (롱 프레스 제스처)

  • 정의: 화면의 특정 지점을 길게 누르는 동작을 인식하는 제스처입니다.
  • 사용법:
    struct ContentView: View {
        @State private var isLongPressed = false
    
        var body: some View {
            Text("길게 누르세요")
                .font(.largeTitle)
                .foregroundColor(isLongPressed ? .red : .blue)
                .onLongPressGesture {
                    self.isLongPressed.toggle()
                }
        }
    }
    
     
  • 설명: 위 코드에서 Text를 길게 누르면 글자 색깔이 변경되도록 구현했습니다. onLongPressGesture modifier를 사용하여 길게 누르는 동작을 감지하고, isLongPressed 상태를 토글하여 글자 색깔을 변경합니다.
  • 추가 기능:
  • minimumDuration: 롱 프레스를 인식하기 위한 최소 시간을 설정할 수 있습니다.

제스처 조합 및 응용

SwiftUI에서는 다양한 제스처를 조합하여 더욱 복잡하고 다채로운 사용자 인터페이스를 구현할 수 있습니다. 예를 들어, 탭 제스처와 드래그 제스처를 함께 사용하여 객체를 이동하고 탭하여 선택하는 기능을 구현할 수 있습니다.

마무리

SwiftUI의 제스처는 앱에 생동감을 불어넣고 사용자 경험을 향상시키는 데 중요한 역할을 합니다. 이번 글을 통해 TapGesture, DragGesture, LongPressGesture에 대한 이해를 높이고, 실제 프로젝트에 적용하여 더욱 풍부한 앱을 개발해 보시기 바랍니다.

728x90
728x90