使用CABasicAnimation的UIPercentDrivenInteractiveTransition

str*_*ode 12 caanimation ios

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

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

我创建了一个演示问题的小样本项目.

https://github.com/stringcode86/UIPercentDrivenInteractiveTransitionWithCABasicAnimation

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

str*_*ode 13

事实证明,解决方案是操纵图层的开始时间.我将尝试在下面更深入地解释解决方案.有两种解决方案,一种是使用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女巫替代UIPercentDrivenTransition.您只需覆盖animateTransition:并从手势识别器操作调用中调用handleGesture :.

  • 我想你可能是世界上唯一一个实现UIViewControllerInteractiveTransitioning的人,并演示了如何在标准的百分比驱动转换之外使用它.祝福你! (2认同)