有时候我们需要自定义navigationController push和pop界面切换动画,用到的代码如下:
For Push:
- MainView
*nextView=[[MainView alloc] init]; - [UIView
beginAnimations:nil context:NULL]; - [UIView
setAnimationCurve:UIViewAnimationCurveEase InOut]; - [UIView
setAnimationDuration:0.75]; - [self.navigationController
pushViewController:nextView animated:NO]; - [UIView
setAnimationTransition:UIViewAnimationTransitio nFlipFromRight forView:self.navigationController.view cache:NO]; - [UIView
commitAnimations]; - [nextView
release];
For Pop:
方法一:
- [UIView
beginAnimations:nil context:NULL]; - [UIView
setAnimationCurve:UIViewAnimationCurveEase InOut]; - [UIView
setAnimationDuration:0.75]; - [UIView
setAnimationTransition:UIViewAnimationTransitio nFlipFromLeft forView:self.navigationController.view cache:NO]; - [UIView
commitAnimations]; -
- [UIView
beginAnimations:nil context:NULL]; - [UIView
setAnimationDelay:0.375]; - [self.navigationController
popViewControllerAnimate d:NO]; - [UIView
commitAnimations];
方法二:
可实现左右滑动动画,可设置滑动方向。
- CATransition*
transition = [CATransition animation]; - transition.duration
= 0.5; - transition.timingFunction
= [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEa seInEaseOut]; - transition.type
= kCATransitionFade; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade - //transition.subtype
= kCATransitionFromTop; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom - [self.navigationController.view.layer
addAnimation:transition forKey:nil]; - [[self
navigationController] popViewControllerAnimate d:NO];