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 的问题是它们的begingTime
、timeOffSet
、speed
属性由于某种原因没有正确设置。如果将它们设置为合理的值,则可以在 containerView 中来回移动所有动画内容。我创建了SCPercentDrivenTransition
女巫是UIPercentDrivenTransition
的替代品。您只需要覆盖 animateTransition: 并从您的手势识别器操作调用中调用 handleGesture:。
【讨论】:
多么棒的解释。谢谢 我认为您可能是世界上唯一实现 UIViewControllerInteractiveTransitioning 并演示了如何在标准百分比驱动转换之外使用它的人。祝福你!以上是关于UIPercentDrivenInteractiveTransition 与 CABasicAnimation的主要内容,如果未能解决你的问题,请参考以下文章