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

时间:2015-03-10 18:45:09

标签: ios uikit

我遇到状态栏问题&导航栏。默认情况下,UINavigationController的导航栏会延伸到状态栏后面并为其着色(左侧屏幕截图)。

使用搜索栏时,我隐藏了导航栏。这会导致未着色的状态栏。 Apple的Mail应用程序没有此问题。

除了创建一个具有背景颜色的单独UIView并将其放在状态栏后面之外,还有其他解决方案吗?

Image that shows hidden and not-hidden navigation bar, and how this affects the status bar color

以下是我想要完成的事情:

enter image description here

2 个答案:

答案 0 :(得分:0)

当您隐藏导航栏时,为什么不更新UIStatusBar的外观。

在NavigationController中实现此功能:

-(UIStatusBarStyle)preferredStatusBarStyle{
    //Have an if statement to determine which UIStatusBarStyle to return, i.e if the navigationBar is hidden 
    return UIStatusBarStyleLightContent; 
 }

使用此隐藏导航栏时调用它:

 [self setNeedsStatusBarAppearanceUpdate];

另一个选择是执行以下操作:

在info pList文件中将UIViewControllerBasedStatusBarAppearance设置为NO。 然后你可以打电话

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

答案 1 :(得分:0)

在您的IB(或以编程方式)中,尝试检查顶部栏的模拟指标:您应该将其设置为从不透明到半透明(导航栏)。

注意:默认情况下,导航栏是半透明的。您应该获得免费的"彩色" **状态栏。

**由UISearchBar.appearance().barTintColor

定义