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

我遇到了状态栏和导航栏的问题。 默认情况下, UINavigationController的导航栏延伸到状态栏的后面并为其添加颜色(左侧截图)。

当使用search栏时,我隐藏了导航栏。 这导致一个无色的状态栏。 苹果的邮件应用程序没有这个问题。

有没有其他解决scheme,而不是创build一个单独的UIView背景颜色,并将其置于状态栏之后?

显示隐藏和非隐藏导航栏的图像,以及这会如何影响状态栏的颜色

这是我想要完成的:

在这里输入图像说明

当你隐藏导航条的时候你为什么不更新你的UIStatusBar的外观。

在您的NavigationController中实现这个function:

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

并通过使用这个隐藏导航栏时调用它:

  [self setNeedsStatusBarAppearanceUpdate]; 

另一种select是做到以下几点:

在你的info pList文件中设置UIViewControllerBasedStatusBarAppearance为NO。 那你可以打电话

 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

在您的IB(或编程),尝试检查顶部栏的模拟指标:你应该从不透明到半透明(导航栏)。

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

**由UISearchBar.appearance().barTintColor定义