参考例子:https://github.com/zys456465111/CustomPopAnimation
在写pop动画时如果要做出和系统相似的动画
需要 注意添加红色字体部分的代码
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {
/**
* 获取动画来自的那个控制器
*/
UIViewController *fromViewController = [transitionContextviewControllerForKey:UITransitionContextFromViewControllerKey];
/**
* 获取转场到的那个控制器
*/
UIViewController *toViewController = [transitionContextviewControllerForKey:UITransitionContextToViewControllerKey];
/**
* 转场动画是两个控制器视图时间的动画,需要一个containerView来作为一个“舞台”,让动画执行。
*/
UIView *containerView = [transitionContextcontainerView];
[containerView insertSubview:toViewController.viewbelowSubview:fromViewController.view];
toViewController.view.transform =CGAffineTransformMakeTranslation(-[UIScreenmainScreen].bounds.size.width+300,0);
NSTimeInterval duration = [selftransitionDuration:transitionContext];
/**
* 执行动画,我们让fromVC的视图移动到屏幕最右侧
*/
[UIViewanimateWithDuration:durationanimations:^{
fromViewController.view.transform =CGAffineTransformMakeTranslation([UIScreenmainScreen].bounds.size.width,0);
toViewController.view.transform =CGAffineTransformIdentity;
}completion:^(BOOL finished) {
/**
* 当你的动画执行完成,这个方法必须要调用,否则系统会认为你的其余任何操作都在动画执行过程中。
*/
[transitionContext completeTransition:transitionContext.transitionWasCancelled];
}];
}