Xcode隐藏白色状态栏ios10

Xcode Hide white status bar ios 10

我想在我的应用程序中使用白色状态栏。为此,我将 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]; 一切都如我所愿。如果有人有更好的解决方案请告诉我。

如果您的 viewcontroller 嵌入到 UInavigationController 中,则尝试在您的

中编写此代码
-(BOOL)prefreStatusBarHidden
{
       return [self.navigationController prefersStatusBarHidden];
}

这是 swift 版本:

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

override var prefersStatusBarHidden: Bool{
        return true
}

上面隐藏状态栏,下面如果你想把它设置为白色:

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
}

可以使用xcode设置状态栏样式为"light"

您可以通过在您的基地中设置导航背景图片来做到这一点 viewcontroller。

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

在您的 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 的子 class,并在 class 中添加方法。并覆盖 class 中需要更改的方法。