[英]Status Bar iOS7
我有两个视图,我需要一个视图才能显示白色状态栏,而另一个视图则不显示状态栏。 我已成功使其显示为“否”状态栏,但无法使主视图具有“白色”状态栏。 我必须使用View controller-based status bar appearance = YES
因为否则,当我从“无状态栏视图”返回时,它会使整个应用程序都没有状态栏。 为什么状态栏不会白!!
清除状态栏的当前代码:
-(BOOL)prefersStatusBarHidden
{
return YES;
}
-(void)ViewDidLoad {
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])
{
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
else
{
// iOS 6
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}
}
试图使状态栏为白色的当前代码:
- (void)viewDidLoad {
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
[self setNeedsStatusBarAppearanceUpdate];
}
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
这一切都意味着在VC中要隐藏状态栏的地方,需要放置:
-(BOOL)prefersStatusBarHidden
{
return true;
}
-(UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleDefault;
}
在另一个VC中,输入:
-(BOOL)prefersStatusBarHidden
{
return false;
}
-(UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
刚刚检查了一下,一切似乎都按预期工作。 请注意,在iOS 7中,UIStatusBarStyle仅控制状态栏中文本的颜色,背景颜色由导航栏本身确定。
为什么状态栏不会白!!
好吧,仅仅因为它是透明的。 状态栏的“背景色”现在(在ios7之后)是状态栏后面的视图/窗口的颜色。
但无法使主视图具有白色状态栏
我通常使用的解决方案,是迫使navigationController的的导航栏呈现状态栏下方 ,而不是后面 。 这样,navigationBar的颜色/背景图像不会在状态栏下扩展,并且状态栏的“背景色”现在是窗口的颜色。
要强制导航栏在状态栏下方开始,请将其clipsToBounds属性设置为YES。
_navigationController.navigationBar.clipsToBounds = YES;
要设置窗口的背景色,
self.window.backgroundColor = [UIColor whiteColor];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.