隐藏导航栏时显示状态栏

Posted

技术标签:

【中文标题】隐藏导航栏时显示状态栏【英文标题】:Show status bar when hide navigation bar 【发布时间】:2016-03-29 13:09:34 【问题描述】:

当用户向上滚动表格时,我会隐藏导航栏。

func scrollViewWillBeginDragging(scrollView: UIScrollView) 
    if self.navigationController?.navigationBarHidden == false 
        self.navigationController?.setNavigationBarHidden(true, animated: true)
    

但是这个方法也隐藏了状态栏。

无法保留我的状态栏。这些方法不起作用:

UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: .None)
prefersStatusBarHidden()

请帮忙!

【问题讨论】:

转到 info.plist 并添加两个属性(如果不存在)。将“状态栏最初隐藏”设置为 NO 并将 UIViewControllerBasedStatusBarAppearance 设置为 NO。 【参考方案1】:

如果你想在 scrollView 上隐藏和显示导航栏。

您可以override viewDidAppear。 & 使用导航控制器的hidesBarsOnSwipe 属性。

覆盖 func viewDidAppear(animated: Bool)

    super.viewDidAppear(animated)
    
    navigationController?.hidesBarsOnSwipe = true


希望这个答案对你有所帮助。

【讨论】:

【参考方案2】:

尝试创建一个变量shouldHideStatusBar

并覆盖这个函数:

override func prefersStatusBarHidden() -> Bool 
    return shouldHideStatusBar

当滚动放置时:

shouldHideStatusBar = true/false
self.setNeedsStatusBarAppearanceUpdate()

希望对您有所帮助。

【讨论】:

【参考方案3】:

是我的错。状态栏没有隐藏,它只是像表格视图背景一样的白色。只需在导航栏隐藏时设置:

UIApplication.shared.statusBarStyle = .default

【讨论】:

以上是关于隐藏导航栏时显示状态栏的主要内容,如果未能解决你的问题,请参考以下文章

状态栏处于“通话中”模式时显示模式对话框后导航栏位置错误

Android仅在状态栏展开时显示通知

如何在导航栏下隐藏搜索栏并在用户下拉表格视图时显示它?

如何在用户注销时隐藏侧边栏并在用户登录时显示侧边栏?

如何使用 useState 在点击时显示/隐藏移动导航栏? React + TypeScript + Tailwind 项目

向下滚动时隐藏导航栏并在用户使用 jquery 向上滚动页面时显示它,不能正常工作