在某些视图控制器中隐藏状态栏 *特定*

Posted

技术标签:

【中文标题】在某些视图控制器中隐藏状态栏 *特定*【英文标题】:Hide Status Bar In certain View controllers *Specific* 【发布时间】:2017-09-06 05:43:41 【问题描述】:

我有一个关于隐藏状态栏的非常具体的问题。 我合并了下面的代码,以便在每个视图控制器上轻松获取状态栏,但是我有一个不需要状态栏的 cameraViewcontroller。我正在尝试隐藏状态栏。

//change the statusbar color for all view controllers
    application.statusBarStyle = .lightContent

我尝试过使用

override var prefersStatusBarHidden: Bool 
    return true

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 

    UIApplication.shared.isStatusBarHidden = true

    return true

但这些似乎都不起作用。我是编程和堆栈溢出的新手,所以请帮帮我。我尝试寻找答案,但似乎找不到这个特殊困境的答案。您的帮助将不胜感激!谢谢。

【问题讨论】:

【参考方案1】:

它非常适合我。

Objective-C

-(BOOL)prefersStatusBarHidden
    return YES;

斯威夫特

override var prefersStatusBarHidden: Bool 
        return true

您还应该使用 info.plist

“查看基于控制器的状态栏外观”设置为 NO

“状态栏最初是隐藏的”设置为YES

【讨论】:

“AppDelegate”中的 application.statusBarstyle = .lightcontent 是否会导致此问题?因为状态栏还在CameraViewController中。我已将“基于视图控制器的状态栏外观”设置为 NO。当我将“状态栏最初隐藏”设置为“是”时,我会丢失其他视图控制器上的所有状态栏。 "statusBarStyle" 已弃用:ios 9.0 @KennyHo 因此,据我了解,按照您使用 Swift 的方式,您必须为所有视图控制器编写代码。有没有办法做类似于 statusBarStyle 的事情,它会自动向我的所有视图控制器添加状态栏?然后我只需要为 CameraVC 去掉一个状态栏。 您还使用“override var preferredStatusBarStyle: UIStatusBarStyle return .lightContent”更改 StatusBarStyle。【参考方案2】:

你能在CameraVC中应用下面的代码吗:

override var prefersStatusBarHidden: Bool 
    return true

【讨论】:

以上是关于在某些视图控制器中隐藏状态栏 *特定*的主要内容,如果未能解决你的问题,请参考以下文章

如何使用objective-C在ios 9中隐藏特定视图控制器的状态栏

在所有视图控制器中隐藏状态栏 - IOS [重复]

仅在模态显示的视图控制器上隐藏状态栏

如果显示视图控制器,状态栏不会隐藏

iPhone:在多视图控制器中隐藏/显示状态栏的问题

同时状态栏隐藏和视图转换