iOS 7 自定义视图控制器转场的 API 基本上都是以协议的方式提供的,这也使其可以非常灵活的使用,因为你可以很简单地将它们插入到你的类中。最主要的五个组件如下:
动画控制器 (Animation Controllers)遵从UIViewControllerAnimatedTransitioning协议,并且负责实际执行动画。
交互控制器 (Interaction Controllers)通过遵从UIViewControllerInteractiveTransitioning协议来控制可交互式的转场。
转场代理 (Transitioning Delegates)根据不同的转场类型方便的提供需要的动画控制器和交互控制器。
转场上下文 (Transitioning Contexts)定义了转场时需要的元数据,比如在转场过程中所参与的视图控制器和视图的相关属性。 转场上下文对象遵从UIViewControllerContextTransitioning协议,并且这是由系统负责生成和提供的。
转场协调器(Transition Coordinators)可以在运行转场动画时,并行的运行其他动画。 转场协调器遵从UIViewControllerTransitionCoordinator协议。
这里出现好多的来的,而且名字都很像。使用的时候需要注意。
UIViewControllerTransitioningDelegate//可在present的时候使用
UIViewControllerAnimatedTransitioning//包含两个必须实现的代理方法
一个带返回值,控制动画时间,另一个负责执行实际动画
UIViewControllerInteractiveTransitioning
这个代理里面包含一个重要的方法,当利用默认转场动画时会执行这个代理方法,我们可以在这里获取Controller(fromeVC,toVC),常用一些手势返回的地方。

//动画上下文,做一些动画的控制,代理方法的参数内会带遵循这个协议的对象
UIViewControllerContextTransitioning
//动画我们一般封装成一个类去执行,这个类需要遵守UIViewControllerAnimatedTransitioning,UIViewControllerInteractiveTransitioning协议,在present的时候需要实现,UIViewControllerTransitioningDelegate的方法返回一个我们创建执行动画的类
present的时候会先调用这里,确定那个累操作动画再执行上面图片中的代理方法。

最后github项目地址Animation
网友评论