关于navigationcontroller 隐藏navigationBar问题

假设ViewController A 和 B 都被添加到navigationcontroller 栈中,顺序是A->B,A 页面隐藏导航条,B 页面显示导航条。
 
最简单实现是在 A 的 viewWillAppear 中隐藏navBar,在viewWillDisappear 中显示navBar,代码如下
- (void)viewWillAppear:(BOOL)animated
{
    [superviewWillAppear:animated];
 
    [self.navigationControllersetNavigationBarHidden:YESanimated:NO];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [superviewWillDisappear:animated];
   
    [self.navigationControllersetNavigationBarHidden:NOanimated:NO];
}
 
运行会出现pop回来navBar位置黑块问题,像下面这样,这个问题是隐藏navBar 时animation为NO导致的。

 

 
 
那么我们将animation 设置为YES,运行会发现在切换tab时又会出现抖动问题。
 

 

 
 
最终的解决方法是将animation 设置为当前调用的动画状态,就能解决上面两个问题
- (void)viewWillAppear:(BOOL)animated
{
    [superviewWillAppear:animated];
 
    [self.navigationControllersetNavigationBarHidden:YESanimated:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [superviewWillDisappear:animated];
   
    [self.navigationControllersetNavigationBarHidden:NOanimated:animated];
}

 

转载于:https://www.cnblogs.com/shuleihen/p/5752061.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值