Swift4, Swift5:
- Причиной этой проблемы является то, что высота панели навигации изменяется, когда веб-приложение начинает загружать страницу.поэтому, используя
viewLayoutMarginsDidChange()
, мы можем изменить высоту навигационной панели. viewLayoutMarginsDidChange()
Вызывается, чтобы уведомить контроллер представления об изменении полей макета его корневого представления.Этот метод будет вызываться каждый раз, когда высота навигационной панели изменяется.
У меня работает код ниже
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
private var webView: WKWebView!
var didChange = false //Set true when we have to update navigationBar height in viewLayoutMarginsDidChange()
override func viewLayoutMarginsDidChange() {
if didChange {
print("Height : - \(self.navigationController?.navigationBar.frame.size.height)")
// set NavigationBar Height here
self.navigationController!.navigationBar.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 96.0)
didChange.toggle()
}
}
override func viewDidLoad() {
super.viewDidLoad()
let appearance = UIBarButtonItem.appearance()
appearance.setBackButtonTitlePositionAdjustment(UIOffset.init(horizontal: 0.0, vertical: -60), for: .default)
self.navigationItem.title = "WebView"
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.navigationBar.tintColor = UIColor.black
self.navigationController?.navigationBar.prefersLargeTitles = true
webView = WKWebView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))
webView.navigationDelegate = self
view = webView
let myURL = URL(string:"https://google.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
print("Did Start")
//webView page starts loading
didChange = true
}
}