zoukankan      html  css  js  c++  java
  • 关于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];
    }
  • 相关阅读:
    Java进阶之并发初探
    Java进阶之HashMap剖析
    Java进阶之反射
    Linux常用命令
    海量数据处理算法与面试题
    一些刷题时总结的重要知识点
    一些Java刷题时的小知识点
    九章算法知识点与题目总结(不定时更新...)
    c++设计模式之状态模式
    c++设计模式之抽象工厂模式
  • 原文地址:https://www.cnblogs.com/shuleihen/p/5752061.html
Copyright © 2011-2022 走看看