动画效果如下:
-(NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext{
return 1.0;
}
-(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext{
UIViewController * viewfrom = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController * viewto = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
UIView *mtransitionContext = [transitionContext containerView];
if (self.flag) {
[mtransitionContext addSubview:viewfrom.view];
[mtransitionContext addSubview:viewto.view];
viewto.view.frame = CGRectMake(-320, 0, 320, 568);
[UIView animateWithDuration:1.0 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^(){
viewto.view.frame = CGRectMake(-160, 0, 320, 568);
} completion:^(BOOL finished){
[transitionContext completeTransition:YES];
BOOL canceled = [transitionContext transitionWasCancelled];
[transitionContext completeTransition:!canceled];
if (!canceled)
{
[[UIApplication sharedApplication].keyWindow addSubview: viewfrom.view];
// [[UIApplication sharedApplication].keyWindow exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
}
}];
}else{
[mtransitionContext addSubview:viewto.view];
[mtransitionContext addSubview:viewfrom.view];
[UIView animateWithDuration:1.0 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^(){
viewfrom.view.frame = CGRectMake(0, 0, 160, 568);
} completion:^(BOOL finished){
[transitionContext completeTransition:YES];
}];
}
}