如何摆脱UIWebView上的状态栏背景?

时间:2017-06-06 18:04:44

标签: ios objective-c swift cordova uiwebview

自iOS 11起,当UIWebView全屏时,状态栏上会显示假背景,其背景颜色与UIWebView相同。

任何人都知道如何摆脱它?

即使将IUWebView添加到故事板并使其全屏显示,也会显示状态栏背景

我一直在尝试编辑UIWebView的大小和其他一些属性,但它们都没有用,但它肯定来自UIWebView。 还尝试查看所有子视图及其大小,并没有看到任何奇怪的内容。

附上屏幕截图,看到灰色的“状态栏”,它在滚动时消失,如果UIWebView没有超过屏幕的那一部分则不会出现。 我希望它在第二个屏幕截图中,只删除假背景,而不是状态栏。

See the Screenshot enter image description here

3 个答案:

答案 0 :(得分:7)

这是因为调整内容插入的UIScrollView新行为包括安全区域插入,如状态栏。

要修复它,只需将其设置为UIScrollViewContentInsetAdjustmentNever

即可
[self.webView.scrollView setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];

从iOS 11 Beta 4开始,您可以将其添加到视口中,并删除假状态栏

viewport-fit=cover

答案 1 :(得分:3)

要完全在HTML / CSS中执行此操作,Viewport元标记中的viewport-fit=cover是处理此问题的正确方法。

但您还需要动态调整填充,以便在iPhone X上使用带缺口的相机/扬声器处理不同大小的状态栏。

幸运的是,Apple为安全区域插入暴露了一些CSS常量,因此您可以利用CSS中的那些: 即,padding-top: constant(safe-area-inset-top);

我写了更多关于这个场景以及iOS 11和iPhone X的新功能:https://ayogo.com/blog/ios11-viewport/

答案 2 :(得分:0)

Swift版本:

webView.scrollView.contentInsetAdjustmentBehavior = .never