2017-02-10 6 views
2

내 기본보기 컨트롤러에서 아래로 스 와이프하고 두 번째보기 컨트롤러를 위에서 내려야합니다. 이 전이가 대화식으로 진행되기를 바란다. 페이징으로 스크롤 뷰와 같이 사용자의 손가락을 따라 가면서 전체 전환을 완료하지 않고도 VC간에 앞뒤로 이동할 수있다.팬 제스처 인식기를 사용하여보기 컨트롤러를 내림

새로운 스냅 샷 업데이트에서보기 컨트롤러간에 슬라이딩 할 때 나타나는 효과입니다. 앱을 처음 열면 카메라 화면에 있습니다. 방향 (위, 아래, 왼쪽 또는 오른쪽)으로 스 와이프하면 해당 뷰가 들어 와서 카메라 화면을 덮습니다. 보기간에 스 와이프하면 모두 본질적으로 기본보기를 덮습니다 (이 효과를 얻기 위해 scrollview를 사용하는 온라인 자습서에서와 같이 화면을 측면으로 이동하지 않음).

기본적으로 수직 페이지 뷰 컨트롤러처럼 보이지만 새로운 뷰 컨트롤러가 화면에 표시 될 때 현재보기 컨트롤러를 이동하는 대신 새로운 뷰 컨트롤러가 완전히 올라올 때까지 현재보기 컨트롤러를 현재 화면으로 덮습니다.

내가 알고있는 것으로부터, 팬 제스처 인식기가 트릭을 수행 할 수 있습니다. 누구든지이 작업을 어떻게 수행 할 수 있는지 알고 있습니다. 나는 영원히 수색하고있어 그것을 파악하는 것처럼 보일 수 없다.

답변

2

내 기본보기 컨트롤러에서 아래로 스 와이프하고 두 번째보기 컨트롤러를 위에서 내려올 수 있기를 원합니다. 이 전환을 대화식으로 바꾸기를 원합니다.

좋아, 대화식 전환 애니메이션을 설명합니다. 이것을 구현하는 방법에 대한 자세한 내용은 푸시 전환인지 현재 (모달) 전환인지에 따라 다릅니다. 프레젠테이션 (모달) 전환이라고 가정합니다.

그러면 제공된보기 컨트롤러의 transitioningDelegate을 설정하여 시작할 것입니다. 모든 것이 여기에서 벗어납니다. 팬 제스처 인식기 present, 를 호출하고, 천이의 대리인의 대리자 메서드 호출 할 것입니다 : 당신이 두 번째 방법에서 돌아

  • animationController(forPresented:presenting:source:)
  • interactionControllerForPresentation(using:)

상호 작용 컨트롤러가 응답에 책임이있다 애니메이션의 "프레임"(트랜지션 코디네이터는 물론)을 업데이트하여 팬 제스처의 각 변경 사항에 적용됩니다.

iOS 10에만 해당되는 경우 UIViewPropertyAnimator를 사용할 수 있기 때문에 매우 간단합니다. 제스처가 끝나고 애니메이션을 완성하거나 취소하기로 결정할 때 애니메이션의 끝이나 시작 부분으로 "서두르는"놀라운 능력이 있습니다. 그렇지 않으면 UIPercentDrivenInteractiveTransition 개체를 사용하여 가장 잘 도움이 될 것입니다.

+0

이것은 정확히 내가 필요한 것입니다. 어떻게 작동하는지 이해하지만 문제를 해결하는 방법을 알아내는 데 어려움이 있습니다. 당신이 해줄 수 없다면 조금 더 설명해 주실 수 있습니다. – user6520705

+0

상당히 복잡합니다. 대부분 기본이 무엇인지 말했 으면이 연구를 시작해야합니다. 이것이 제시된 뷰 컨트롤러인지 푸시 된 뷰 컨트롤러인지 여부를 명확히한다면 도움이 될 것입니다. 또한 예제 또는 자습서를 찾는 것이 유용 할 것입니다. – matt

+0

대화 형으로 제공된보기 컨트롤러에 대한 예제가 없지만 다른 종류의 전환에 대한 예제가 있으므로 다운로드하여 시도해보십시오. https : // github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch06p296customAnimation2/ch19p620customAnimation1/AppDelegate.swift 옆에서 드래그하여 다음보기를 가져 오는 탭 표시 줄 컨트롤러입니다. 이 코드는 제스처와 애니메이터 사이의 상호 작용을 보여줍니다. – matt