iOS 11 prefersLargeTitles not updating until scroll

I recently hit the same issue and none of the suggestions worked for me. Instead, all I needed to do was to invoke sizeToFit(). Sample code:

private func configureNavigator() {
    guard let navigationController = navigationController else { return }
    navigationController.navigationBar.prefersLargeTitles = true
    navigationItem.largeTitleDisplayMode = .automatic
    navigationController.navigationBar.sizeToFit()
}

I hope this helps!


I had the same issue only on one tableview ...

I had to set :

self.tableView.contentInsetAdjustmentBehavior = .never

so that my tableview stop scrolling when uiviewcontroller was loaded.

It's the tableview automatic scrolling that makes the large title being hidden

Hope this helps


For me the only working solution is:

DispatchQueue.main.async { [weak self] in
    self?.navigationController?.navigationBar.sizeToFit()
}

in

viewWillAppear()

I had the same problem. Although you are not using Storyboards but I hope this could help someone. I checked "Prefer Large Titles" for the Navigation Controller (not the View Controller) I embedded my TableViewController in. All the View Controllers after the Navigation Controller turned and had large titles, and it should work.