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

从iOS 11开始,当UIWebView全屏显示时,状态栏上会出现假背景,其背景颜色与UIWebView相同。

谁知道如何摆脱它?

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

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

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

查看截图 在此处输入图像描述

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

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

 [self.webView.scrollView setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever]; 

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

viewport-fit=cover

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

但是,您还需要动态调整填充以处理iPhone X上带有缺口摄像头/扬声器的不同大小的状态栏。

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

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

Swift版本:

 webView.scrollView.contentInsetAdjustmentBehavior = .never