隐藏导航栏时如何保持网页标题可见,例如在iOS Safari中?

时间:2017-04-23 09:21:10

标签: ios swift uiviewcontroller uinavigationcontroller uinavigationbar

我正在尝试重现iOS Safari导航栏的行为,其中导航栏隐藏后会显示标题持有者:

iOS Safari行为

当导航栏完全可见时,它会显示网页的标题文字。

隐藏导航栏时,标题文本仍会显示在屏幕顶部。我不确定这是否是普通导航栏的功能的一部分,或者它是否是定制的。

Safari appearance

我的ViewController的行为

相关代码

override func loadView() {
    super.loadView()
    webView = WKWebView(frame: self.view.frame, configuration: WKWebViewConfiguration())
    view = webView!
    searchBar = UISearchBar()
    searchBar!.delegate = self // just using searchBarSearchButtonClicked()
    searchBar!.searchBarStyle = UISearchBarStyle.minimal
    searchBar!.showsCancelButton = true
    navigationItem.titleView = searchBar
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.isNavigationBarHidden = false
    navigationController?.isToolbarHidden = false
    navigationController?.hidesBarsOnSwipe = true
}

行为

我对导航栏在此状态下的当前外观感到满意(我很好地显示了URL而不是网页标题)。

然而,当我的导航栏隐藏时,它确实完全隐藏,没有留下任何标题。如何在这里看到标题持有人?

Mine

1 个答案:

答案 0 :(得分:0)

您可以使用此库:https://github.com/bryankeller/BLKFlexibleHeightBar。但请注意,它不是UINavigationBar子类。因此,如果您需要一些NavigationBar内置功能(例如" Back"按钮等),您需要自己实现它。