UIWebview ограничение не корректируется - PullRequest
1 голос
/ 16 апреля 2020

Итак, у меня есть веб-просмотр, и его шрифт содержимого может увеличиваться / уменьшаться с помощью ползунка. Когда я двигаюсь вверх, увеличивается размер шрифта, а также ограничение веб-просмотра, чтобы соответствовать содержанию. Но когда я сдвигаюсь вниз, ограничение остается в последнем состоянии, когда я сдвигаюсь вверх, оно не изменяется, но шрифт уменьшается. Так что у меня много свободного места, потому что ограничение по высоте не меняется.

@objc func changeFontSize(_ sender: UISlider!) {
        let webViewSize = 16 * sender.value
        let jsString = "document.getElementsByTagName('body')[0].style.fontSize='\(webViewSize)px'"
        webView.stringByEvaluatingJavaScript(from: jsString)
        webViewDidFinishLoad(webView) 
}
func webViewDidFinishLoad(_ webView: UIWebView) {
        let webViewTextSize = webView.sizeThatFits(CGSize(width: 1.0, height: 1.0))
        var webViewFrame = webView.frame
        webViewFrame.size.height = webViewTextSize.height
        webView.frame = webViewFrame
        webHeightConstraints.constant = webViewTextSize.height
        webView.scrollView.isScrollEnabled = false
        webView.scrollView.bounces = false
    }

Это мой код, и я попытался изменить webHeightConstraints.constant на webview.scrollView.contentSize.height, но получил тот же результат. Все остальные значения изменяются в соответствии с ползунком, только ограничение высоты. Он изменяется только тогда, когда скользит вверх, а затем остается на этом значении.

1 Ответ

0 голосов
/ 16 апреля 2020

У меня тоже такая же проблема. попытайтесь очистить веб-просмотр при перемещении вверх и вниз, это сработает, вот код для чистого веб-просмотра.

final class WebCacheCleaner {

    class func clear() {
        URLCache.shared.removeAllCachedResponses()
        HTTPCookieStorage.shared.removeCookies(since: Date.distantPast)

        WKWebsiteDataStore.default().fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes()) { records in
            records.forEach { record in
                WKWebsiteDataStore.default().removeData(ofTypes: record.dataTypes, for: [record], completionHandler: {})
                print("[WebCacheCleaner] Record \(record) deleted")
            }
        }
    }
}

вызовите вот так WebCacheCleaner.clear()

...