Xcode隐藏白色状态栏ios 10

Posted

技术标签:

【中文标题】Xcode隐藏白色状态栏ios 10【英文标题】:Xcode Hide white status bar ios 10 【发布时间】:2017-05-30 23:07:11 【问题描述】:

我想在我的应用程序中使用白色状态栏。为此,我将View controller-based status bar appearance 设置为NO,将Status bar style 设置为UIStatusBarStyleLightContent。但现在我需要在一些视图控制器中隐藏状态栏。要隐藏它,我必须将View controller-based status bar appearance 设置为YES 并添加- (BOOL)prefersStatusBarHidden return YES;。但是状态栏现在是黑色的。当View controller-based status bar appearanceYES 时为黑色,如果NO 为白色。那么问题来了,如何设置白色状态栏并隐藏呢?

更新: VC 中我想要白色状态栏的代码(prefferdSTatusBarStyle 未调用)

VC 中隐藏状态栏的代码

.plist 设置

结果是黑色状态栏,隐藏在某些VC中

UPD2:

我知道使用不推荐使用的方法很糟糕,但是使用[[UIApplication sharedApplication] setStatusBarHidden:YES]; 一切都可以按我的意愿进行。如果有人有更好的解决方案,请告诉我。

【问题讨论】:

您必须在项目的每个视图控制器中显示“UIStatusBarStyleLightContent”吗? 是的。所有视图控制器都应带有白色状态栏 你找到解决办法了吗? How to hide a status bar in ios?的可能重复 【参考方案1】:

这是快速版本:

要隐藏状态栏或更改其外观,您需要在视图控制器本身中覆盖以下属性

override var prefersStatusBarHidden: Bool
        return true

如果您想将其设置为白色,上面会隐藏状态栏和下方:

override var preferredStatusBarStyle: UIStatusBarStyle 
        return .lightContent

【讨论】:

【参考方案2】:

在您的 plist 文件中添加 View controller-based status bar appearance Bool 属性并将其设置为 YES。

现在在您的视图控制器中添加如下方法:

// TO MAKE STATUS BAR WHITE
override func preferredStatusBarStyle() -> UIStatusBarStyle 
        return .LightContent


// TO MAKE STATUS BAR BLACK
override func preferredStatusBarStyle() -> UIStatusBarStyle 
        return .LightContent


// RETURN TRUE TO HIDE AND FALSE TO SHOW STATUS BAR
override func prefersStatusBarHidden() -> Bool 
        return true

对于Objective-C

- (BOOL)prefersStatusBarHidden 
    return NO;


-(UIStatusBarStyle)preferredStatusBarStyle 
    return UIStatusBarStyleLightContent;

要删除冗余代码,您可以将BaseViewController 作为UIViewController 的子类,并在该类中添加方法。并覆盖类中需要更改的方法。

【讨论】:

不知道出了什么问题,但是当我这样做时,我的状态栏是黑色的,preferredStatusBarStyle 没有被调用。 prefersStatusBarHidden 工作 @Ossir 你是否在 plist 中将 bool 设置为 YES? 是的。 prefersStatusBarHidden 有效,preferredStatusBarStyle 无效 @Ossir 确保该方法没有被其他任何地方覆盖? 是的。我在我的项目中搜索过,只有一个结果【参考方案3】:

你可以使用xcode设置状态栏样式为“light”

【讨论】:

您对状态栏的 info.plist 文件进行了哪些更改? 只有View controller-based status bar appearance 设置为YESStatus bar style 设置为UIStatusBarStyleLightContent。但是状态栏现在是黑色的 您必须将基于视图控制器的状态栏外观设置为“否” 如果我设置为NO,我将无法使用prefersStatusBarHidden隐藏状态栏 你试过这个代码吗? - (UIStatusBarStyle)preferredStatusBarStyle 返回 UIStatusBarStyleLightContent; 【参考方案4】:

如果您的视图控制器嵌入在 UInavigationController 中,请尝试在您的

中编写此代码
-(BOOL)prefreStatusBarHidden

       return [self.navigationController prefersStatusBarHidden];

【讨论】:

【参考方案5】:

您可以通过在基本视图控制器中设置导航背景图像来做到这一点。

UIImage *bgImage = [UIImage imageNamed:@"bg_navigationbar"];
[self.navigationController.navigationBar setBackgroundImage:bgImage forBarMetrics:UIBarMetricsDefault];

【讨论】:

以上是关于Xcode隐藏白色状态栏ios 10的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap:动态显示和隐藏状态栏(iOS Xcode)

iPhone/iOS 状态栏未隐藏在 Xcode 项目中

iOS8 Xcode 6 Cordova 状态栏未正确隐藏

在 iOS 7 中使用 Tint Color 显示导航栏时白色状态栏消失

无法使用xcode phonegap在ios中隐藏状态栏

隐藏状态栏IOS [重复]