优雅解决iOS导航栏跳转或返回时不流畅,卡白条问题。

在平时的开发过程中我们经常会遇到一些视图需要显示导航栏,一些视图不需要显示导航栏,但当视图界面多了以后,管理起来就相当麻烦,设置不好的情况下,就会出现有时该显示的不显示,该隐藏的不隐藏,或者跳转时动画错位不流畅,今天介绍一种既设置方便,又跳转流畅的方式。

首先创建程序内所有视图控制器的父视图 BaseViewController

在父视图的.h文件内声明参数
/// 是否显示导航栏
@property (nonatomic, assign) BOOL isShowNav;

在父视图的.m文件内实现方法
-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    
    if (self.isShowNav == NO) {
        [self.navigationController setNavigationBarHidden:YES animated:animated];
    } else {
        [self.navigationController setNavigationBarHidden:NO animated:animated];
    }
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.isShowNav = YES;


}

让程序内所有界面控制器继承自此父视图,如果不需要隐藏导航,就什么都不需要操作,如果需要隐藏导航,只需要在viewDidLoad方法内设置self.isShowNav = NO即可,原理是viewDidLoad方法先于viewWillAppear方法执行,在viewDidLoad设置参数,可以保证设置导航栏是否显示的方法只被执行一次。

你可能感兴趣的:(iOS,Object-C,iOS,导航栏)