Xcode隐藏白色状态栏ios 10

问题描述 投票:0回答:5

我想在我的应用程序中使用白色状态栏。为此,我将

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 appearance
YES
时为黑色,当
NO
时为白色。

那么问题来了:如何设置白色状态栏并隐藏它?

更新

VC中我想要白色状态栏的代码(

preferredStatusBarStyle
未调用)

VC中隐藏状态栏的代码

.plist
设置

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

更新#2

我知道使用已弃用的方法是不好的,但使用

[[UIApplication sharedApplication] setStatusBarHidden:YES];
一切都会按我想要的方式工作。如果有人有更好的解决方案请告诉我。

ios objective-c xcode ios10 statusbar
5个回答
5
投票

这是快速版本:

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

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
的子类,并在该类中添加方法。并重写类中需要更改的方法。


0
投票

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


0
投票

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

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

-1
投票

您可以通过在基本视图控制器中设置导航背景图像来完成此操作。

UIImage *bgImage = [UIImage imageNamed:@"bg_navigationbar"];
[self.navigationController.navigationBar setBackgroundImage:bgImage forBarMetrics:UIBarMetricsDefault];
© www.soinside.com 2019 - 2024. All rights reserved.