如何使用点击手势(iOS8 / Swift)在 pageViewController 上显示/隐藏状态栏

Posted

技术标签:

【中文标题】如何使用点击手势(iOS8 / Swift)在 pageViewController 上显示/隐藏状态栏【英文标题】:How can I show/hide the status bar on a pageViewController using tap gesture (iOS8 / Swift) 【发布时间】:2015-01-17 21:17:39 【问题描述】:

查看针对类似问题的所有解决方案,我一直在尝试让statusBar 用点击手势显示/隐藏。

我在 plist 中设置了View controller-based status bar appearance = NO

我在DataViewController(页面视图控制器)和RootViewController 中尝试了以下代码:

let app = UIApplication.sharedApplication()
app.setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.Fade)

它不起作用。

这是嵌入在UITabBarController 中的,这会有所不同吗?

此外,我还能够获得以下内容以从RootViewController 中隐藏状态栏:

override func prefersStatusBarHidden() -> Bool 
    return true

但是DataViewController 甚至没有调用这个函数,并且只能通过这种方式永久隐藏它,而不是打开/关闭它。

有什么想法吗?

【问题讨论】:

应该可以——你确定调用setStatusBarHidden的方法正在被调用吗? 断点被击中,是的。 【参考方案1】:

我已经在代码中尝试过,一切对我来说都很好。确保 View controller-based status bar appearance 设置为 NO。并且不需要覆盖prefersStatusBarHidden()

【讨论】:

我希望能够在点击手势上显示/隐藏状态栏,这不是完全隐藏吗? 抱歉,误解了您的问题。我已经尝试过我的代码,一切正常。请查看我的更新答案。 你在哪里打电话?在数据视图控制器中?还是 RootViewController?【参考方案2】:

如果您使用UIPageViewController,那么您应该在RootViewController 中使用此代码

如果你有 navigationController 它也会隐藏它

ViewDidLoad()

self.navigationController?.hidesBarsOnTap = true

并使用此方法根据navigationBar是否隐藏来隐藏或显示状态栏

override func prefersStatusBarHidden() -> Bool 
        if self.navigationController?.navigationBarHidden == true 
            return true
        
        else
        
            return false
        
   

【讨论】:

以上是关于如何使用点击手势(iOS8 / Swift)在 pageViewController 上显示/隐藏状态栏的主要内容,如果未能解决你的问题,请参考以下文章

SWIFT4:如何让两个点击手势识别器一起工作

Swift - 如何将点击手势添加到 UIViews 数组?

swift - xcode10 - 点击事件交互BUG - (手势和button的addTarget方法)

如何仅为Swift 3中的UILabel的特定范围设置点击手势

在 Swift 中无法识别点击手势(手势开始)

使用点击手势识别器时,IOS swift应用程序无法正常工作