WKWebView 动态调整大小问题

Posted

技术标签:

【中文标题】WKWebView 动态调整大小问题【英文标题】:WKWebView dynamic sizing issues 【发布时间】:2015-01-05 18:44:35 【问题描述】:

在我目前正在开发的一个应用程序中,UIWebView 用于显示 PowerPoint 等文件。 Web 视图右侧有一个抽屉,可以通过UIPanGestureRecognizer 打开和关闭。当您调整大小,然后打开或关闭时,Web 视图的右侧会出现一个黑色伪影,与此问题中看到的完全相同:Black bar appearing in UIWebview when device orientation changes。

在这个问题和 ios 8 中的 PDF 呈现黑色背景的问题之间,我决定尝试WKWebView。这没有任何问题,但是当 Web 视图的宽度动态变化时(右约束绑定到平移手势),Web 视图中的内容非常慢。 Web 视图要么不调整大小,要么像它那样非常不稳定/块状。使用 UIWebView 时不存在此问题。有没有人有任何指针可以解决UIWebView 和那个黑色工件的问题,或者为什么WKWebView 表现如此糟糕?

【问题讨论】:

【参考方案1】:

回复:WKWebView

我的猜测是 webview 试图在调整框架时多次重新渲染其内容。这可能会导致不稳定,可能您对此无能为力。 (不确定)

您可以“作弊”的一种方法是在调整其框架之前拍摄 webview 的快照,并将其放置在 webview 的顶部。

将 webview 的 hidden 属性设置为 YES,希望在调整框架时终止重新渲染。

将快照连接到平移手势识别器,当手势结束时,为 webview 提供最后一帧并将hidden 设置回NO

此时,您可以删除快照(可能带有 alpha 动画),并且 webview 应该只需要重新渲染其内容一次。

快照的外观和 webview 的最终外观之间可能会有差异,但它应该是可行的。

【讨论】:

以上是关于WKWebView 动态调整大小问题的主要内容,如果未能解决你的问题,请参考以下文章

IOS开发中如何调整WKWebView中的图片大小

WKWebView 的调整大小处理程序中未更新 window.innerWidth/Height

如何调整html中的图像大小以适应屏幕尺寸?

在窗口调整大小时动态调整画布大小

PHP图像动态调整大小与存储调整大小的图像

为啥我的列表框没有调整大小? (动态调整对话框组件的大小)