2014-04-04 3 views
10

CABasicAnimation (또는 다른 CAAnimation)에서 제스처 구동 UIPercentDrivenInteractiveTransition을 사용하는 경우 finishInteractiveTransition이 끝나면 애니메이션이 UIView 블록 애니메이션을 사용할 때와 같이 부드럽게 애니메이션되지 않고 마지막 위치로 이동합니다. 나는 CAAnimation을 사용할 때 finishInteractiveTransition에서 부드럽게 애니메이트하는 방법을 알아 내려고 노력 중이다.UIPercentDrivenInteractiveTransition with CABasicAnimation

저는 하루 종일 보냈습니다. 사용자 정의 VC 전환과 함께 CAAnimation을 사용하는 것에 대해서는 아무런 언급이없는 것 같습니다. 모든 사람이 UIView 블록 기반 애니메이션을 참조합니다.

문제를 나타내는 작은 샘플 프로젝트를 만들었습니다.

https://github.com/stringcode86/UIPercentDrivenInteractiveTransitionWithCABasicAnimation

는 그것을보고 시간을 보내는 사람에게 감사합니다. 나는 그것을 고맙게 생각한다.

+1

repo를 확인하십시오. 파일이 없습니다. 프로젝트가 컴파일되지 않습니다. – RaffAl

+0

시간을내어 주셔서 감사합니다. 나는 repo를 고쳤으며 지금은 모두 좋을 것 같습니다. – stringCode

+0

이 문제에 대한 더 좋은 해결책이 있습니까? 하나는'UIPercentDrivenInteractiveTransition'을 서브 클래스 화하지 않거나 자신 만의'UIViewControllerInteractiveTransitioning'을 설정하지 않아도됩니다. –

답변

10

솔루션

결과적으로 솔루션은 레이어 시작 시간을 조작하는 것으로 나타났습니다. 아래에서 좀 더 깊이있는 해법을 설명하려고 노력할 것입니다. UIPercentDrivenTransition 하위 클래스를 사용하거나 UIViewControllerInteractiveTransitioning 프로토콜을 구현하는 두 가지 해결 방법이 있습니다. 사용자 지정 UIViewControllerInteractiveTransitioning은 마스터 분기에 있고 UIPercentDrivenTransition 구현은 UIPercentDrivenTransitionImplementation 분기에 있습니다.

https://github.com/stringcode86/UIPercentDrivenInteractiveTransitionWithCABasicAnimation

설정 설명

UIPercentDrivenTransition는 animateTransition에서 애니메이션을 사용 updateInteractiveTransition:을 구현 할 수 있습니다. 나는 그들이 animateTransition:startInteractiveTransition:에서 호출 한 다음 레이어 (아마도 컨테이너 뷰 레이어) 속도를 0.0으로 설정하고 해당 timeOffSet을 조작한다고 추측합니다. 이렇게하면 전환을 자동으로 앞뒤로 이동할 수 있습니다. 이것은 귀하의 UIView 애니메이션을 위해 그것을 않습니다. CAAnimations의 문제점은 어떤 이유로 든 begingTime, timeOffSet, speed 속성이 올바르게 설정되지 않았습니다. 적절한 값으로 설정하면 containerView에서 모든 애니메이션 내용을 앞뒤로 이동할 수 있습니다. 나는 대신 SCPercentDrivenTransition 마녀를 만들었습니다. animateTransition :을 재정 의하여하고 제스처 인식기 액션 호출에서 handleGesture :를 호출하면됩니다.

+0

좋은 설명. 감사합니다. – andrei

+1

전 세계에서 유일하게 UIViewControllerInteractiveTransitioning을 구현 한 사람일지도 모르며 표준 백분율 구동 전환 외부에서이를 사용할 수있는 방법을 보여주었습니다. 그래서 당신을 축복하십시오! – hao

관련 문제