2019년 9월 22일 일요일

화면가장자리를 스와이프 하여 화면 전환하기 (EdgePanGesture for ViewTransition)

상황 
  • 탭바 기반의 앱에서 전체매뉴 탭 혹은 설정화면 탭의 경우 탭바를 숨김 
  • 이때 상단의 네비게이션 바의 왼쪽 아이템으로 탭 전환이 가능하지만 화면 왼쪽 가장자리 끝부분을 스와이프하여 첫번째 탭으로 이동하고자 함 
방법 
  • UIScreenDegePanGuestureRecognizer를 이용 
내용
    func setEdgePanGesture() {
        let edgePanGesture = UIScreenEdgePanGestureRecognizer(target: self, action: #selector(moveToFirstTab(_:)))
        edgePanGesture.edges = UIRectEdge.left
        view.addGestureRecognizer(edgePanGesture)
    }
    
    @objc func moveToFirstTab(_ recognizer: UIScreenEdgePanGestureRecognizer) {
        if recognizer.state == .recognized {
            self.tabBarController?.selectedIndex = 0
        }
    }
추가 확인 사항 
  • 화면전환이 애니메이션이 없이 이루어짐. 터치 종료시점(손가락을 뗀 시점)에서 애니메이션과 함께 탭이 전환되려면 EdgePanGesture가 아닌 PanGesture가 필요할 것 같음