UINavigationController改变动画效果

@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
原文地址:https://www.cnblogs.com/benbenzhu/p/3930909.html