酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

UIViewControllerを使っている場合にUINavigationBarの大きいタイトルが小さくならない/追従しない

久しぶりにiOSネタを投稿するような気がします。iOS 11からUINavigationBarに大きいタイトルが追加されました。

f:id:ch3cooh393:20180207150427p:plain

テーブルビューをスクロールさせた時に自動的に小さいタイトルに切り替わって欲しいので、largeTitleDisplayMode.automaticを設定しています。

navigationItem.title = "タイトル"
if #available(iOS 11.0, *) {
    navigationItem.largeTitleDisplayMode = .automatic
    navigationController?.navigationBar.prefersLargeTitles = true
} else {
    // Fallback on earlier versions
}

なぜかナビゲーションバーの大きいタイトルが追従しない

UICollectionViewControllerUITableViewControllerを使っている時には特に意識したことはないのですが、UIViewControllerの上にUICollectionViewまたはUITableViewを置いている場合に大きいタイトルがスクロールしても小さなタイトルに切り替わってくれません。

文章で書いても伝わりにくいと思うので、以下の動画をみてください。

f:id:ch3cooh393:20180207145801g:plain

結構な時間悩んだ結果、解決することができました。

解決編

StoryboardでのCollection Viewを置く位置を変更することで、うまく大きなタイトルが追従するようになりました。Table ViewまたはCollection Viewの並び順を一番最初にする必要があるようです。

f:id:ch3cooh393:20180207150123j:plainf:id:ch3cooh393:20180207150130j:plain
Collection Viewを一番前に持ってこないと大きなタイトルが追従しない

Storyboardを弄っただけで修正できるようになりました。

f:id:ch3cooh393:20180207145902g:plain