iOS 11 introduced large navigation bar titles. They look great and you should use them on main views. When you use large titles on a UITableViewController everything works as expected. On scroll the large title hides with a nice animation and returns to a normal smaller one.

There exist two bugs which can prevent the title from showing up. If you set prefers large title on the navigation bar in the storyboard the setting does not get picked up. I recommend you add the following to the controller you want the large navigation title.

In viewDidLoad:

override func viewDidLoad() {
  // Drop the if-#available should you only target iOS 11 and newer.
  if #available(iOS 11.0, *) {
    navigationController?.navigationBar.prefersLargeTitles = true

Apple recommends to only show large titles in main views. If your viewcontroller has sub-sections make sure to set navigationItem.largeTitleDisplayMode = .never either in code or in your storyboard.

In addition problems arise if you need to customize your view around your table. Usually you create a UIViewController for this and then add the views and tableView as required. If the tableView is not the first view in your storyboard, the large title fails to hide automatically.

To fix this issue drag and drop the tableView on top of every other view.

If you are creating the layout via code you most likely need to make sure your tableView is the first element in the main view’s subviews array.

Subscribe and get mail when I post.

Announcing Bold Shows - A TV tracking app
How to verify and limit decimal number inputs in iOS with Swift