隐藏导航栏时的假状态栏颜色
Posted
技术标签:
【中文标题】隐藏导航栏时的假状态栏颜色【英文标题】:Fake Status Bar Color when Navigation Bar is hidden 【发布时间】:2015-03-10 18:45:08 【问题描述】:我遇到了状态栏和导航栏的问题。默认情况下,UINavigationController
的导航栏延伸到状态栏的后面并为其着色(左截图)。
当使用搜索栏时,我隐藏了导航栏。这会产生一个未着色的状态栏。 Apple 的邮件应用没有这个问题。
除了创建一个带有背景色的单独 UIView 并将其放在状态栏后面之外,还有其他解决方案吗?
这是我想要完成的:
【问题讨论】:
研究UIBarPositioningDelegate
感谢@Desdenova 的建议,我找到了***.com/a/18897105/3512120,它解决了我的问题,也可能解决了你的问题。
【参考方案1】:
当您隐藏导航栏时,为什么不更新您的 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];
【讨论】:
【参考方案2】:在您的 IB(或以编程方式)中,尝试检查顶部栏的模拟指标:您应该将其从不透明设置为半透明(导航栏)。
注意:默认情况下,导航栏是半透明的。你应该得到 free 的“彩色”** 状态栏。
** 由UISearchBar.appearance().barTintColor
定义
【讨论】:
以上是关于隐藏导航栏时的假状态栏颜色的主要内容,如果未能解决你的问题,请参考以下文章