直入主题
在某些需要隐藏导航栏的页面使用这个方法。可以解决导航栏右上角显示一块空白的bug。
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
问题1:
参数animated = YES。那么如果这个页面是根视图。例如个人中心,那么切换到这个页面就会看到一个导航栏隐藏的动画。
解决办法:
将animated参数由YES改为animated。
**问题2: **
如果这个页面有模态到下一个页面,那么在模态和dismiss的过程中,会有一个隐藏与显示导航栏的动画。
解决办法:
根据分析结果,暂未发现更好的解决方法。暂得出不能由系统控制animated。所以手动创建变量isPresent。再模态后将变量置为YES。相当于独立了 模态视图 的处理方法。使用后统一置为NO。
[self.navigationController setNavigationBarHidden:YES
animated:_isPresentViewController ? NO : animated];
分析过程:分析animated 这个参数变化过程。
分析结果:
模态到下一页面,那么这两个控制器会执行四个方法。顺序是从上到下,present和dismiss的方法中动画参数不管传入BOOL是什么,最后这四个方法的animated参数都是同样的结果。
Push到下一页面,那么这四个方法animated的参数由Push和Pop方法中的动画参数决定。
具体统计结果👇
Write In Last
菜鸟会继续深挖这个animated。也希望有同行或者大牛看到这个文章。可以给予一些指点。不胜感激。这也是这篇文章<其实就是日记>的主要目的。