App Store Today卡片放大特效

一 过渡动画对象介绍

  • 过渡动画代理(Transitioning Delegate)
    每个View Controller都有一个transitionDelegate属性,这个代理实现了UIViewControllerTransitioningDelegate协议。每当你要present或者dismiss一个View Controller的时候,UIKit会去过渡动画代理中查询需要使用的动画效果。实际项目中,我们可以设置代理为自定义的类来返回我们需要的自定义的动画效果。
  • 动画控制器(Animation Controller)
    动画控制器是实现了UIViewControllerAnimatedTransitioning协议的用于执行过渡动画的对象。
  • 过渡动画上下文对象(Transitioning Context)
    上下文对象实现了UIViewControllerContextTransitioning协议,在动画过程中是至关重要的,它封装了所有的参与过渡动画的View Controllers的信息。不过我们不用写代码实现它,在动画控制器里面,过渡动画执行的时候,我们的函数会接收到一个上下文对象作为参数并从中获取相关View Controller的信息。

二 过渡动画流程

  • 你触发一个过渡动作。可以通过编码或者segue来触发。
  • UIKit询问要过渡到的目的视图控制器它是否有自定义的过渡动画代理。如果没有,则UIKit将使用iOS自带的过渡动画。
  • 然后,UIKit通过过渡动画代理,获取到动画控制器。比如通过 animationControllerForPresentedController(_:presentingController:sourceController:)方法获取到动画控制器,如果返回空,则使用默认的动画控制器。
  • 一旦找到了动画控制器,UIKit构建上下文对象。
  • 接着,UIKit通过动画控制器的 transitionDuration(_:)方法获取动画执行时长。
  • 再接着调用动画控制器的animateTransition(_:)完成过渡动画。
  • 最后动画控制器调用上下文对象的completeTransition(_:)方法指示动画完成。图4是官方文档的一个过渡动画的API角色示意图。
image.png

Demo 地址[UTransitions]

原文链接Creating Custom UIViewController Transitions
原文链接Creating Custom UIViewController Transitions
原文链接Creating Custom UIViewController Transitions

你可能感兴趣的:(App Store Today卡片放大特效)