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 appearance
为YES
时为黑色,如果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
设置为YES
和Status 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)