当使用带有UIPercentDrivenInteractiveTransition的手势驱动的CABasicAnimation (或任何其他CAAnimation)时,在finishInteractiveTransition上,动画跳转到最终位置,而不是像使用UIView块动画时那样平稳地动画。我正在努力弄清楚如何在finishInteractiveTransition上平稳地动画,以便在使用CAAnimation时结束。
我现在已经花了一整天的时间在这上面。似乎没有任何地方提到使用CAAnimation与自定义VC转换,每个人都提到基于UIView块的动画。
我创建了一个演示问题的小示例项目。
https://github.com/stringcode86/UIPercentDrivenInteractiveTransitionWithCABasicAnimation
感谢所有花时间看它的人。我真的很感激。
发布于 2014-04-05 19:40:16
解决方案
事实证明,解决方案是操纵层,开始时间。下面我将尝试更深入地解释这个问题的解决方案。有两种解决方案,一种是使用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:动作调用即可。
https://stackoverflow.com/questions/22868376
复制相似问题