我有一个表视图,其中每个单元格都包含一个HTML内容的WKWebView。最初,内容的大小适合规定的宽度和高度。
我想要做的是允许用户放大和缩小WKWebView,同时调整单元格视图的高度。
为了给出一些上下文,我所做的是将Javascript(WKUserScript)附加到WKWebView以及它包含的脚本中
window.onload = function () {
window.webkit.messageHandlers.sizeNotification.postMessage({width:
document.body.scrollWidth, height: document.body.scrollHeight});
}
这样做是在加载HTML内容时,它会将名为“sizeNotification”的消息发送到符合WKScriptMessageHandler的UIViewController。该消息包含scrollHeight,这是我用来通过调整高度约束来设置WKWebView的框架。
我还保存了scrollHeight值,这个值稍后会很重要。
在用户放大WKWebView之后,调用了委托方法scrollViewDidEndZooming,其中包含WKWebView的scrollView的当前缩放信息。我通过
设置WKWebView框架的新高度约束常量webViewHeightConstraint.constant = initialHeight * scale
WKWebView的高度增加,因为我使用了动态大小调整单元格,所以表格单元格高度也会相应调整。
即使缩放比例达到接近1.0的值 如果它高于此值,WKWebView / scrollView内的内容将在底部获得白色填充。
我怀疑这与WebView框架的宽度/高度比率有关,因为如果WebView的初始高度大于内容高度,这也会发生。另一个例子是,如果你在Safari中打开一个内容高度为300像素的网页,但你伸出窗口使其高度为100像素,那么底部会有空白区域(或任何设置为的空白区域)
我的问题是,是否有针对白底填充问题的修复/解决方法?如果您查看iOS上Mail中的电子邮件主题,您可以放大和缩小电子邮件,并相应地调整单元格高度。