Панель навигации с большим заголовком уменьшается при загрузке веб-просмотра - PullRequest
0 голосов
/ 11 декабря 2018

В viewcontroller я загружаю веб-представление (WKWebview) с включенным большим заголовком навигации.Проблема состоит в том, что он показывает большую панель навигации и заголовок, перед тем как веб-представление загружается, когда веб-представление загружается, оно сокращается до нормального.Любая помощь будет оценена.

Заранее спасибо ...!

1 Ответ

0 голосов
/ 09 августа 2019

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
    }

}
...