Controller间的转场动画
很多App实现了跳转的动画, 稍微进行研究了一下,写个文章记录一下。
主要涉及几个类, 关系如下:
相关说明:
FromVC、ToVC为转换的两个controller, 两者可以通过UINavigationController的push、pop, 或者是present、dismiss,又或者是UITabbarController的tab切换,来实现。 这里主要说一下UINavigationController的push、pop。其他两种原理一样,只是实现的类不同罢了
协议UINavigationControllerDelegate定义了几个接口, 针对UINavigationController的push、pop,主要要实现下面这个接口,返回一个实现了UIViewControllerAnimatedTransitioning协议的对象。
- (nullable id <UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController animationControllerForOperation:(UINavigationControllerOperation)operation
fromViewController:(UIViewController *)fromVC
toViewController:(UIViewController *)toVC
- 协议UIViewControllerAnimatedTransitioning包含两个方法:
//返回动画时长
- (NSTimeInterval)transitionDuration:(nullable id <UIViewControllerContextTransitioning>)transitionContext;
//在这个函数编写实现动画的代码,动画完成后调用transitionContext的completeTransition方法。
- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext;
- 协议UIViewControllerInteractiveTransitioning用来控制交互动画的。