UIPercentDrivenInteractiveTransition 与 CABasicAnimation

Posted

技术标签:

【中文标题】UIPercentDrivenInteractiveTransition 与 CABasicAnimation【英文标题】:UIPercentDrivenInteractiveTransition With CABasicAnimation 【发布时间】:2014-04-04 16:39:24 【问题描述】:

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

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

我创建了一个演示问题的小示例项目。

https://github.com/stringcode86/UIPercentDrivenInteractiveTransitionWithCABasicAnimation

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

【问题讨论】:

检查回购。文件丢失。项目无法编译。 感谢您花时间查看它。我修复了回购,现在应该一切都好 是否有更好的解决方案来解决这个问题?一个没有子类化UIPercentDrivenInteractiveTransition 或设置你自己的UIViewControllerInteractiveTransitioning 【参考方案1】:

解决方案

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

https://github.com/stringcode86/UIPercentDrivenInteractiveTransitionWithCABasicAnimation

解释

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

【讨论】:

多么棒的解释。谢谢 我认为您可能是世界上唯一实现 UIViewControllerInteractiveTransitioning 并演示了如何在标准百分比驱动转换之外使用它的人。祝福你!

以上是关于UIPercentDrivenInteractiveTransition 与 CABasicAnimation的主要内容,如果未能解决你的问题,请参考以下文章