隐藏导航栏时显示状态栏
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
【讨论】:
以上是关于隐藏导航栏时显示状态栏的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 useState 在点击时显示/隐藏移动导航栏? React + TypeScript + Tailwind 项目