覆盖 UINavigationBar 时 iOS 7 状态栏变黑

Posted

技术标签:

【中文标题】覆盖 UINavigationBar 时 iOS 7 状态栏变黑【英文标题】:iOS 7 Status Bar Turns Black When Overriding UINavigationBar 【发布时间】:2014-05-27 17:52:05 【问题描述】:

我正在继承 UINavigationBar 以便我可以覆盖 drawRect 方法。但是,当我在 ios 7 中这样做时,状态栏会完全变黑。根本没有文字。在 iOS 6 中它没有这个问题。状态栏应该在哪里。

- (void)drawRect:(CGRect)rect // status bar goes pitch black

    [super drawRect:rect];

如果我注释掉这个方法,状态栏就会返回。如何恢复状态栏?


2014 年 4 月 15 日更新

我尝试使用找到的代码 here 将状态栏设置为其他内容,但似乎没有任何效果。

【问题讨论】:

黑色是窗口。状态栏有文字,但也是黑色的,黑底黑字很难看。在 iOS 7 中,您可以将文本改为白色。 好的,所以我发现了如何将文本颜色更改为白色。但我不确定如何将背景颜色更改为半透明的。我试过玩 status_bar_tinting_parameters > navigation_bar >Translucent> YES 似乎没有做任何事情 在 iOS 7 中,状态栏是透明的,你应该增加导航栏的高度,让它出现在状态栏的后面。看看任何标准的 iOS 7 应用程序,你都会看到。 对于标准导航界面,这将自动发生。如果您要在界面中添加自己的导航栏,则必须按照我在此处解释的方式自己进行操作:***.com/a/22232805/341994 可能你的drawRect: 覆盖在某种程度上搞砸了这整个事情。 【参考方案1】:

我找到了一个解决方案。文本最初是黑色背景上的黑色。我还没有弄清楚如何使背景透明,但我想有白色的文字就足够了。

https://***.com/a/18184831/3400034

【讨论】:

以上是关于覆盖 UINavigationBar 时 iOS 7 状态栏变黑的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 UINavigationBar 在 iOS 7 中覆盖视图顶部?

iOS 7(子层)AVPlayer Fullscreen animate 需要上面(覆盖)UINavigationBar

Xamarin iOS UINavigationBar 奇怪的覆盖

UINavigationBar 在解除 UISearchController 时覆盖 UITableView

UINavigationBar 和view 重叠覆盖问题

有啥方法可以覆盖 iOS 7 中的 titleView 褪色?