@interface UINavigationController (CustomTransition)
- (void) pushWithCustomAnimation:(UIViewController *) controller;
- (void) popWithCustomAnimation;
@end
@implementation UINavigationController (CustomTransition)
- (void) pushWithCustomAnimation:(UIViewController *) controller {
CATransition *transition = [CATransition animation];
transition.duration = 0.3;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionMoveIn;
transition.subtype = kCATransitionFromTop;
transition.delegate = self;
[self.view.layer addAnimation:transition forKey:nil];
self.navigationBarHidden = NO;
[self pushViewController:controller animated:NO];
}
- (void) popWithCustomAnimation {
CATransition *transition = [CATransition animation];
transition.duration =0.3;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionReveal;
transition.subtype = kCATransitionFromBottom;
transition.delegate = self;
[self.view.layer addAnimation:transition forKey:nil];
self.navigationBarHidden = NO;
[self popViewControllerAnimated:NO];
}
@end