首页 文章

隐藏导航栏时如何避免黑框出现?

提问于
浏览
1

我有一个主页面的应用程序是一个隐藏的导航栏,当我从子页面用导航栏返回到这个主页面时,因为我设置隐藏在主页面中的导航方法: - (void)viewWillAppear,我发现一个黑盒子会出现动画,如何避免呢?非常感谢你!!!

4 回答

  • 6

    For Swift3.0

    在First ViewController中

    override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(true)
         self.navigationController?.setNavigationBarHidden(true, animated: true)
        }
    

    在第二个ViewController中

    func backButtonPressed() {
            self.navigationController?.setNavigationBarHidden(false, animated: false)
            self.navigationController?.popViewController(animated: true)
        }
    
  • 1

    好的,我找到了答案:

    self.navigationController.view.backgroundColor = [UIColor redColor];
    
  • 12

    这可以解决问题,而不会破坏颜色,这可能导致导航控制器的颜色错误 .

    只需将其设置为viewWillAppear中的动画:)

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

    如果你回到带有导航控制器的页面,将动画设置为NO

    - (IBAction)backButtonClicked:(id)sender {
        [self.navigationController setNavigationBarHidden:NO animated:NO];
        [self.navigationController popToRootViewControllerAnimated:YES];
    }
    
  • 0

    可能这将有助于某人,如果它发生在tabbar控制器应用程序中,同时切换选项卡

    override func viewWillAppear(_ animated: Bool) {
                super.viewWillAppear(animated)
                self.navigationController?.setNavigationBarHidden(true, animated: true)
            }
    
    override func viewWillDisappear(_ animated: Bool) {
                super.viewWillDisappear(animated)
                if self.navigationController?.visibleViewController != self {
                    self.navigationController?.setNavigationBarHidden(false, animated: true)
                }
            }
    

相关问题