ios 导航栏隐藏时的一个坑

最近项目中有个需求,需要将登录页导航栏隐藏。其他页面导航正常显示。

自己用demo中尝试,在viewDidLoad简单敲下:

self.navigationController.navgationBar.hidden = YES;

首先登陆页本身会因为导航栏的隐藏而上移。好,重新调整下页面位置。

然后在跳转页面A的时候,A页面在viewDidLoad设置:

self.navigationController.navigationBar.hidden = NO;

发现页面会整体上移,了解到translucent这个属性可以调整controller的view的起始位置

于是再设置:

self.navigationController.navigationBar.translucent  =NO;

然而并没什么用。

在试:

将self.navigationController.navigationBar.hidden = NO;的方式改掉

-(void)viewWillAppear:(BOOL)animated

{

//        self.navigationController.navigationBar.hidden = NO;

    [super viewWillAppear:animated]; 

    [self.navigationController setNavigationBarHidden:NO animated:animated];

    self.navigationController.navigationBar.translucent  =NO;

}

惊奇发现可行。但在项目中这样设置仍然不行。

理解到导航栏是页面共用的,对于导航栏,谁隐藏谁处理,最好在登录页做设置:

- (void)viewWillAppear:(BOOL)animated

{

    [super viewWillAppear:animated];

    [self.navigationController setNavigationBarHidden:YES animated:animated];

}

- (void)viewWillDisappear:(BOOL)animated

{

    [self.navigationController setNavigationBarHidden:NO animated:animated];

    [super viewWillDisappear:animated];

}

好的,问题解决。

你可能感兴趣的:(ios 导航栏隐藏时的一个坑)