2017-01-16 149 views
5

我想要我的应用程序中的白色状态栏。为此,我将View controller-based status bar appearance设置为NOStatus bar styleUIStatusBarStyleLightContent。但是现在我需要在一些视图控制器中隐藏状态栏。要隐藏它,我必须将View controller-based status bar appearance设置为YES并添加- (BOOL)prefersStatusBarHidden {return YES;}。但状态栏现在是黑色的。当View controller-based status bar appearanceYES时为黑色,如果为NO则为黑色。所以问题是,如何设置白色状态栏并隐藏它?Xcode隐藏白色状态栏ios 10

UPD: 代码在VC,我想有白色状态栏(prefferdSTatusBarStyle不叫)

enter image description here

代码在VC以隐藏状态栏

enter image description here

的.plist设置

enter image description here

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

UPD2:

我知道这是不好用不赞成的方法,但与[[UIApplication sharedApplication] setStatusBarHidden:YES];一切工作,因为我想要的。如果有人有更好的解决方案,请让我知道。

+0

您必须在项目的每个视图控制器中显示“UIStatusBarStyleLightContent”? – Birendra

+0

是的。所有视图控制器都应该带有白色状态栏 – Ossir

+0

您是否找到解决方案? – OXXY

回答

0

您可以使用Xcode的状态栏样式设置为“光”

enter image description here

+0

它已经设置为亮,但结果相同 – Ossir

+0

您对状态栏的info.plist文件做了任何更改吗? – Birendra

+0

只有'查看基于控制器的状态栏外观'设置为'YES'和'状态栏样式'设置为'UIStatusBarStyleLightContent'。但状态栏现在是黑色 – Ossir

0

,如果你的视图 - 控制嵌入的UINavigationController然后尝试在写这个代码的

-(BOOL)prefreStatusBarHidden 
{ 
     return [self.navigationController prefersStatusBarHidden]; 
} 
3

这是SWIFT版本:

要隐藏状态栏或改变它的外观,你需要重写按照您的视图控制器本身

override var prefersStatusBarHidden: Bool{ 
     return true 
} 

性能上面隐藏状态栏和下方,如果你想将它设置为白色:

override var preferredStatusBarStyle: UIStatusBarStyle { 
     return .lightContent 
} 
-1

你可以在你的基地的ViewController设置导航背景图片做到这一点。

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

这只是错误的。应该删除。 –

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; 
} 

对于去除冗余代码,你可以做一个BaseViewControllerUIViewController子类,并添加该类中的方法。并重写需要改变的类中的方法。

+0

不知道什么错,但是当我这样做时,我有黑色状态栏和'preferredStatusBarStyle'没有调用。 'prefersStatusBarHidden'作品 – Ossir

+0

@Ossir您是否将plool设置为YES? –

+0

是的。 'prefersStatusBarHidden'工程和'preferredStatusBarStyle'否 – Ossir