一.实现效果如下:

二.如何使用:
将"SideTransitionAnimator"类文件拖入工程中,在触发侧滑打开的方法中添加如下代码:


三.实现原理:
设置rightVC的模态样式为自定义,并遵循转场协议代理.通过设置自定义present和dismiss时的nimatedTransitioning来打开和关闭侧滑动画.
UIKit 在presenting或者dismissing时calls下面这个方法:
func animateTransition(using transitionContext: UIViewControllerContextTransitioning). 所以要配置自定义的转场动画也应在这里设置.present和dismiss的转场原理都很简单:
1.在presenting时,获取到转场上下文的containerView, 以及toViewController ;
2.设置toViewController的初始位置,并将视图添加到容器视图上.
3.通过UIView的动画方法设置presenting结束时toViewController的视图位置.并将容器视图设置成蒙版的颜色.动画结束时执行: transitionContext.completeTransition(true).
4.创建一个"TapGestureRecognizerTarget"的类,作为dismiss的回调执行者. 它继承自CALayer.目的不是视图的渲染或者显示.而是通过添加给containerView的layer给自身一个强引用,以便在presenting结束后不被释放.那么在containerView的tap手势执行时才能dismiss掉toViewController.
Demo下载地址:https://github.com/moonCai/SimpleSideAnimator
网友评论