关于界面跳转时Navigationbar的白条问题

在开发中我们有的界面需要隐藏导航栏 ,而下个界面则不需要隐藏导航栏

这个时候我们可以在这两个方法中来实现导航栏的隐藏和出现

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES];
}
- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO];
}

这个时候我想细心的同学会发现,当push到下个页面的时候,会出现白条,会给人一种卡顿的感觉。这是因为我们在隐藏导航栏的时候没有加入动画,我们只要把上面隐藏导航栏的方法换成带动画的就好了

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:YES];
}

- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}

这时我们会发现 ,在界面跳转的时候如丝般顺滑了。

这是我们一个界面需要隐藏一个界面不需要隐藏的情况,还有另外一种情况,就是当我们两个界面都需要隐藏的时候,再用这个方法的时候,会发现还是会出现白条,原因是因为两次隐藏导航栏之间有一个不隐藏导航栏。

这时候我们如果想自由的控制当前页面的导航栏出现和隐藏的话,我们可以在我们基类的ViewController里加上一个变量来控制。

基类里可以这么写

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:self.hideNavgaitonbar animated:animated];
}

然后我们就可以随心所欲的控制导航栏的出现和隐藏了

- (void)viewWillAppear:(BOOL)animated
{
    self.hideNavgaitonbar = YES;
    [super viewWillAppear:animated];
}

到这里算是解决了目前的需求,如果有什么更好的方法,欢迎大家交流

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,119评论 25 709
  • 4.1 栏 4.1.1 状态栏 状态栏展示了关于设备及其周围环境的重要信息。 状态栏: 是透明的始终固定在整个屏幕...
    小虾仔阅读 4,809评论 0 3
  • 1 近几个月以来,对于坚持阅读、学习和思维导图笔记,有种说不出的厌烦,但又从心底里认可坚持这些习惯的好处。在熊猫书...
    自由精灵阅读 1,787评论 2 1
  • 球虫病是家兔最常见且危害严重的一种寄生虫病。兔球虫病可导致大批仔、幼兔发病死亡,生长速度下降,抵抗力下降,易感染其...
    养殖先生阅读 4,028评论 0 2
  • 《没有记忆的人》 文/白传英 总想和你在一起 回到过去 你在我心里 变得不再珍惜 想知道你的过去 过去里有...
    白清风阅读 1,652评论 0 1

友情链接更多精彩内容