【问题标题】:WKWebView contentSize height not changing after resize font size调整字体大小后 WKWebView contentSize 高度不变
【发布时间】:2018-09-03 20:07:53
【问题描述】:

我使用 UIScrollView 并在底部放置一些 UILabel 和 WKWebView。 WkWebView 帧大小总是等于它的 contentSize 并且我禁用了它的 userInteraction。我使用 html 字符串在 WKWebView 中显示数据。在将 html 字符串加载到 WKWebView 之前,我可以通过替换 css 中的关键字来更改 WKWebView 中的字体大小。

我的问题是当我增加字体大小时,WKWebView 的 scrollView.contentSize.height 也会增加,但是当我减小字体大小时,WKWebView 的 scrollView.contentSize.height 并没有减少。它总是记住它的最大价值。这会在 WKWebView 和我的 UIScrollView 中留下很大的空白。如何使 WKWebView 的 scrollView.contentSize 适合其内容?

这是我在 WKWebView 完成加载其内容时调整 UIScrollView 大小的代码。

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    print(webView.scrollView.contentSize.height)
    self.webView.frame = CGRect(x: self.webView.frame.origin.x, y: self.webView.frame.origin.y, width: webView.scrollView.contentSize.width, height: webView.scrollView.contentSize.height)
    self.scrollView.contentSize = CGSize(width: contentView.bounds.width, height: self.webView.frame.origin.y + webView.scrollView.contentSize.height)
}

【问题讨论】:

  • 你设法弄清楚这个吗?我有同样的问题..
  • 如果有人得到解决方案,请在这里分享...

标签: html ios swift uiscrollview wkwebview


【解决方案1】:

我通过将初始字体大小(小字体)的高度保存在变量中来处理它,并在更改字体大小时返回大字体的正确高度,但再次返回小字体时不返回正确的高度...... 这就是为什么我在再次返回小字体后不计算字体而是从我之前保存的变量中获取值..

var webviewHeightForSmallFont : CGFloat = 0


webView.evaluateJavaScript("document.documentElement.scrollHeight", completionHandler: { (height, error) in
                                        let h = height as! CGFloat
                                        if self.textSize == 100 && self.webviewHeightForSmallFont == 0{
                                            self.webviewHeightForSmallFont = h
                                        }
                                        if self.webviewHeightForSmallFont != 0 && self.textSize == 100 {
                                            self.delegate!.webViewDidGotHeight(self.webviewHeightForSmallFont)
                                        }
                                        else if self.cellHeight != h {
                                            self.delegate!.webViewDidGotHeight(h)
                                        }
                                        else if h == 0 {
                                            self.delegate!.webViewDidFaildToGotHeight()
                                        } 

在上面的代码中,100 大小用于小字体,150 用于大代码......以上部分代码检查字体是否设置为小并且没有其他值然后 0......然后将高度保存在webviewHeightForSmallFont 变量,如果它已经有一些值并且字体很小,那么使用最后一个先前的值......因为它适用于大。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 2013-10-09
    • 1970-01-01
    • 2014-02-11
    相关资源
    最近更新 更多