Ios UIPercentDrivenInteractivateTransfion与CABASICanization

Ios UIPercentDrivenInteractivateTransfion与CABASICanization,ios,caanimation,Ios,Caanimation,将手势驱动的UIPercentDrivenInteractiveTransition与CABasicAnimation(或任何其他CAAnimation)一起使用时,在完成InteractiveTransition后,动画会跳到最终位置,而不是像使用UIView块动画那样平滑地设置动画。我试图弄清楚如何在使用动画时在完成InteractiveTransition后平滑地设置动画 我现在已经花了一整天在这上面了。在任何地方似乎都没有提到使用自定义VC转换的动画,每个人都提到基于UIView块的动画

将手势驱动的UIPercentDrivenInteractiveTransition与CABasicAnimation(或任何其他CAAnimation)一起使用时,在完成InteractiveTransition后,动画会跳到最终位置,而不是像使用UIView块动画那样平滑地设置动画。我试图弄清楚如何在使用动画时在完成InteractiveTransition后平滑地设置动画

我现在已经花了一整天在这上面了。在任何地方似乎都没有提到使用自定义VC转换的动画,每个人都提到基于UIView块的动画

我创建了一个小样本项目来演示这个问题

感谢所有花时间看它的人。非常感谢。

解决方案

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

解释


UIPercentDrivenTransition使用animateTransition:中的动画来实现
updateInteractiveTransition:
。我猜他们只是从
startinteractivatetransition:
调用
animateTransition:
,然后将层(可能是容器视图层)速度设置为0.0,并操纵其
时间偏移量。这使他们能够自动地前后移动过渡。这将为UIView动画实现这一点。CAAnimations的问题是它们的
开始时间
时间偏移
速度
属性由于某些原因设置不正确。如果将这些设置为合理的值,则可以在containerView中来回移动所有动画内容。我已经创建了
SCPercentDrivenTransition
开关,它是
UIPercentDrivenTransition
的替代品。您只需从手势识别器的动作调用中覆盖animateTransition:和call HandleTesture:。

检查报告。文件丢失了。项目未编译。感谢您花时间查看。我修复了回购协议,现在应该都好了。有没有更好的方法解决这个问题?一个没有子类化
UIPercentDrivenInteractiveTransition
或设置自己的
UIViewControllerInteractiveTransition
。这是一个很好的解释。谢谢我想你可能是世界上唯一一个实现UIViewControllerInteractiveTransition并演示如何在标准百分比驱动转换之外使用它的人。所以祝福你!