在iOS 7中隐藏导航栏时,如何更改状态栏的颜色?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在iOS 7中隐藏导航栏时,如何更改状态栏的颜色?相关的知识,希望对你有一定的参考价值。

我知道如何通过执行以下操作来更改导航栏(和状态栏)的颜色:

self.navigationController.navigationBar.barTintColor = [UIColor redColor];

但是当我隐藏导航栏时,状态栏颜色将恢复为透明色。

即使导航栏被隐藏,如何使状态栏颜色与barTintColor保持一致?

答案

在状态栏下添加一个UIView并将其backgroundColor属性设置为导航栏barTintColor

另一答案

您只需使用正确的statusBar测量值将UIView添加到当前视图,然后更改颜色。

这是一些示例代码。首先获取状态栏的框架:

 //The statusBarFrame returns the frame in screen coordinates. I believe the correct way to get what this corresponds to in view coordinates is to do the following:
- (CGRect)statusBarFrameViewRect:(UIView*)view 
{
    CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
    CGRect statusBarWindowRect = [view.window convertRect:statusBarFrame fromWindow: nil];
    CGRect statusBarViewRect = [view convertRect:statusBarWindowRect fromView: nil];
    return statusBarViewRect;
}
//source: http://stackoverflow.com/questions/3888517/get-iphone-status-bar-height

然后在viewDidload方法中或使用以下代码隐藏导航栏时创建视图:

UIView *statusBarUnderLay = [[UIView alloc] initWithFrame:[self statusBarFrameViewRect:self.view];
[statusBarUnderLay setBackgroundColor:[UIColor yellow]];
[self.view addSubview:statusBarUnderLay];

另一答案

这对我来说很有用(在Swift中):

let statusBarBGView = UIView(frame: UIApplication.sharedApplication().statusBarFrame)
statusBarBGView.backgroundColor = .whiteColor() //color of your choice
view.addSubview(statusBarBGView)

我的问题是我将导航栏设置为隐藏,这使得statusBar背景变得清晰。这导致我的tableView单元格在滚动时显示在statusBar后面。

另一答案

我的解决方案很简单,设置viewcontrollers视图的背景颜色。例如

[self.view setBackgroundColor:[UIColor blackColor]];

当操作系统选择不显示状态栏时,需要处理添加视图的情况。

另一答案

我找到了一种使用InterfaceBuilder解决问题的简单方法。我的问题是这样的,在隐藏导航栏后,有一个恼人的白色差距。

[

然后我取消选中这两个选项

options

那它有效

after## Heading ##

另一答案

self.tableView.contentInset = UIEdgeInsetsZero之后设置self.navigationController?.navigationBarHidden = true

另一答案

这解决了我的问题:

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

以上是关于在iOS 7中隐藏导航栏时,如何更改状态栏的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

隐藏导航栏时的假状态栏颜色

iOS hidesBarsOnSwipe 状态栏背景颜色

更改状态栏色调颜色

在iOS 7中隐藏状态栏时防止UINavigationController调整原点

iOS 7 中 UIActivityViewControllers 的模态状态栏和导航栏文本颜色

在 iOS 7 中使用 Tint Color 显示导航栏时白色状态栏消失