window的root是UINavigationController,UINavigationController的root是UITabBarController,然后设置UINavigationController纯色背景
进入第一个页面是把NavigationBar隐藏,进入第二个页面NavigationBar不隐藏 再回来 第一个页面下面就会出现一个高度20的黑条如上图
我无奈之下把UIViewController的view高度加20 虽然解决问题但是 再别的页面出现了奇怪问题各种UIViewController的view出现下移情况,不一定出现
有哪位大神能解决下

解决方案 »

  1.   

    ViewController有一个Adjust Scroll View Insets的开关设置。这个设置的目的是让scrollview可以自适应TopLayoutGuide的位置,当然包括顶部的系统状态栏高度(20)
      

  2.   

    没用的,主要是加了backgroundimage就出问题了
      

  3.   

    你可以按照我描述的写一个简单的demo,关键是设置navigation bar的backgroundimage,只要设置就出现问题
      

  4.   

    在最后一个ViewController添加如下代码,不知能否满足你要求@property (nonatomic,assign) BOOL navigationBarHidden;- (void) viewWillAppear:(BOOL)animated
    {
        self.navigationBarHidden = self.navigationController.navigationBarHidden;
        
        [super viewWillAppear:animated];
    }
    - (void) viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
        self.navigationController.navigationBarHidden = NO;
    }
    - (void) viewWillDisappear:(BOOL)animated
    {
        [super viewWillDisappear:animated];
        self.navigationController.navigationBarHidden = self.navigationBarHidden;
    }
      

  5.   

    self.automaticallyAdjustsScrollViewInsets = NO/YES;