UIPercentDrivenInteractiveTransition与CABasicAnimation

当使用手势驱动UIPercentDrivenInteractiveTransition与CABasicAnimation(或任何其他CAAnimation)时,finishInteractiveTransition,animation跳转到最终位置,而不是animation平滑,如使用UIView块animation的情况。 我试图弄清楚如何在使用CAAnimation时finishInteractiveTransition结束时顺利进行animation处理。

我现在花了整整一天的时间。 似乎没有提及使用CAAnimation与自定义VC转换的任何地方,每个人都指的是基于UIView块基于animation。

我已经创build了一个小样本项目来演示问题。

https://github.com/stringcode86/UIPercentDrivenInteractiveTransitionWithCABasicAnimation

感谢任何花时间看着它的人​​。 我很欣赏它。

事实certificate,解决scheme是操纵图层的开始时间。 我将尝试在下面更深入地解释解决scheme。 有两种使用UIPercentDrivenTransition子类或实现UIViewControllerInteractiveTransitioning协议的解决scheme。 自定义UIViewControllerInteractiveTransitioning在主分支上,UIPercentDrivenTransition实现在UIPercentDrivenTransitionImplementation分支上。

https://github.com/stringcode86/UIPercentDrivenInteractiveTransitionWithCABasicAnimation

说明

UIPercentDrivenTransition在animateTransition中使用animation:实现updateInteractiveTransition: :。 我猜他们只需要调用animateTransition:startInteractiveTransition:然后设置图层(可能容器视图层)速度为0.0,并操纵其timeOffSet 。 这使他们能够自动移动你的转换。 这是你的UIViewanimation。 CAAnimations的问题是它们的begingTimetimeOffSet ,由于某种原因speed属性设置不正确。 如果你将它们设置为合理的值,你可以来回移动containerView中的所有animation内容。 我创造了SCPercentDrivenTransition巫婆是UIPercentDrivenTransition替代UIPercentDrivenTransition 。 您只需要重写animateTransition:并调用handleGesture:从您的手势识别器操作调用。