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