У меня есть WKWebView внутри TableViewCell в качестве его contentView. Есть некоторый контент HTML, который загружается в WKWebView. Чтобы размер шрифта оставался неизменным при изменении ориентации устройства, в CSS-файле я настраиваю настройку размера на такую, как эта *
html {-webkit-text-size-adjust:none}
Это работает просто отлично, но когда устройство перемещается из книжной в альбомную ориентациюВысота содержимого веб-просмотра не обновляется. Поскольку в ландшафтном режиме теперь требуется меньше вертикального пространства, поскольку приложение имеет больше места по горизонтали для размещения содержимого, но вертикальная высота содержимого не обновляется, что приводит к появлению большого количества свободного пространства под WKWebView.
Я используюСледующий метод делегата для получения высоты содержимого в WKWebView.
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.evaluateJavaScript("document.readyState", completionHandler: { [weak self] (result, error) in
if (result as? String) == "complete" {
webView.evaluateJavaScript("document.body.offsetHeight",
completionHandler: { [weak self] (result, error) in
self?.viewHeight = (result as? CGFloat) ?? 0.0
self?.contentWebView.scrollView.isScrollEnabled = false
self?.webViewRendered?()
})
}
})
}
webViewRendered
- это метод обратного вызова, который устанавливает высоту UITableViewCell
.
В ориентации устройства представление таблицы изменений перезагружается для обновленных данных.
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
tableView.reloadData()
}
Может кто-нибудь подсказать мне, почему document.body.offsetHeight
не изменяется при изменении ориентации устройства.
Еще одно дополнение: если я запускаю приложение в альбомной ориентации, а затем поворачиваю его в книжную ориентацию, оно корректно корректируется, но снова поворачивая его в альбомную ориентацию, не работает, и если я начинаю с портретной ориентации и поворачиваю его в альбомную, он не корректируется должным образом, это означает, что от книжного до альбомного поворота не дает мне правильный результат в этой строке
self?.viewHeight = (result as? CGFloat) ?? 0.0