Black area on UIWebView during load

大兔子大兔子 提交于 2019-12-03 02:32:13

I've had this problem before, and it's related to the content inset of your UIWebView. This black area appears wherever you have a bottom inset set on the scrollview. I was able to fix this by setting the opaque property of the webview:

self.opaque = NO;

Set for UIWebView opaque NO and clear background color simultaneously:

You need to set the background color to clear as well as making the webView opaque. This doesn't seem to work if you don't also change the backgroundColor to clear.

self.opaque = NO;
self.backgroundColor = [UIColor clearColor];

I must disagree with the suggested solutions here. The recommended solution of setting the opaque and backgroudColor silently hides the real problem. If you do that, then the front-most UIWebBrowserView won't cover the entire frame with the black rectangle, and will be transparent -> but the area that was previously black will remain unused, and your content won't be displayed there.

I extracted the UIWebBrowserView and printed out its descriptions when resizing, and it seems to me that it uses rounded values for its content rectangle. As the view's frame bounds are defined as CGFloat you get rounding issues when you scale the web browser view window (resizing the wrapping view's height/width to a non-integral values).

I managed to fix this problem through rounding the setFrame arguments of my UIWebView:

UIWebView *myWebView;
....
[myWebView setFrame:CGRectMake(newX, newY, floor(newWidth), floor(newHeight)];

In swift,

webView.opaque = false

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!