使用CABasicAnimation的UIPercentDrivenInteractiveTransition

时间:2014-04-04 16:39:24

标签: ios caanimation

当使用手势驱动的UIPercentDrivenInteractiveTransition和CABasicAnimation(或任何其他CAAnimation)时,在finishInteractiveTransition上,动画会跳转到最终位置,而不是像使用UIView块动画时那样平滑地制作动画。我试图弄清楚如何在使用CAAnimation时finishInteractiveTransition平滑动画。

我现在花了一整天时间。似乎没有任何关于将CAAnimation与自定义VC转换一起使用的提及,每个人都引用基于UIView块的动画。

我创建了一个展示问题的小样本项目。

https://github.com/stringcode86/UIPercentDrivenInteractiveTransitionWithCABasicAnimation

感谢任何花时间看它的人。我很感激。

1 个答案:

答案 0 :(得分:12)

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

https://github.com/stringcode86/UIPercentDrivenInteractiveTransitionWithCABasicAnimation

说明

UIPercentDrivenTransition在animateTransition中使用动画:实现updateInteractiveTransition:。我猜他们只是从animateTransition:调用startInteractiveTransition:,然后将图层(可能是容器视图图层)的速度设置为0.0并操纵其timeOffSet。这允许他们自动前后移动您的过渡。这适用于你的UIView动画。 CAAnimations的问题是他们的begingTimetimeOffSetspeed属性由于某种原因未正确设置。如果将它们设置为合理值,则可以在containerView中来回移动所有动画内容。我创建了SCPercentDrivenTransition女巫替代UIPercentDrivenTransition。您只需要覆盖animateTransition:并从手势识别器操作调用中调用handleGesture:。