Я использую универсальный c WKWebView
, в котором я вычисляю высоту с помощью следующего кода ..
webView.evaluateJavaScript(
"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '\(Int(100))%'", completionHandler: { (result, err) in
if result != nil {
if let _ = self.delegate {
webView.frame.size.height = 1
webView.scrollView.isScrollEnabled = false
webView.contentMode = .scaleAspectFit
webView.evaluateJavaScript("var meta = document.createElement('meta');" +
"meta.name = 'viewport';" + " " +
"meta.content = 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no';" +
"var head = document.getElementsByTagName('head')[0];" + "head.appendChild(meta);", completionHandler: { (result, error) in
webView.evaluateJavaScript("document.documentElement.scrollHeight", completionHandler: { (height, error) in
let h = height as! CGFloat
if self.bodyContentHeight != h {
self.delegate!.webViewDidGotHeight(h, indexPath: self.rowIndex)
}
})
})
}
}
})
, но иногда это не возвращает правильную высоту большую часть времени для Араби c язык. я добавил дополнительную высоту даже больше чем 100, но все еще не работает для некоторого результата.
Я беру данные API и создаю html
файл и открываю его в Safari. Его работа в Safari работает нормально.
Примечание: он работает в Safari после добавления атрибута <meta charset="UTF-8">
в html
. это происходит без этого атрибута API формы.