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

6

浏览了所有类似问题的解决方案后,我一直在尝试使用轻拍手势来显示/隐藏 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 的方法被调用了吗? - Noah Witherspoon
断点在那里被触发了,是的。 - Michael Campsall
2个回答

3

我已经在代码中尝试过,一切都很正常。请确保 View controller-based status bar appearance 设置为 NO。此外,不需要重写 prefersStatusBarHidden()


我希望能够通过手势显示/隐藏状态栏,这样做不会彻底隐藏它吗? - Michael Campsall
抱歉,我误解了你的问题。我已经在我的代码中尝试过,一切都正常。请查看我的更新答案。 - liuyaodong
你是在哪里调用这个函数?是在DataViewController还是RootViewController中? - Michael Campsall

0

如果您正在使用UIPageViewController,则应在RootViewController中使用此代码

如果您有一个navigationController,它也会隐藏它

ViewDidLoad()

self.navigationController?.hidesBarsOnTap = true

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接