ios11のnavigationBarを実装する
ios11からnavigationBarの以下のようにデザインが変わりました.NavigationBarに新しくlargeTitleDisplayModeというパラメータが加わりました.自分は最初にios11のデザインを見たとき,tableViewのHeaderか何かと思っていていました(笑)
largeTitleDisplayModeには.automatic
,.always
,.never
の三つがあります..always
だと左側の画像のように,.never
だと右側の画像のようにios10までと同じになります.今回はlargeTitleDisplayModeをViewControllerごとに使い分けてみたいと思います.
StoryBoardで
StoryBoardで設定する場合,NavigationBarのinspectorからPrefers Large Titles
にチェックをつけます.
viewController毎に変更したい場合は,Navigation ItemからLage Title
より設定できます.上で説明した通り,.automatic
,.always
,.never
の三種類で,大きくしたくないなら.never
にします.
コードで
実装はそれぞれのViewControlerで下記のように実装します.
iOS11からの機能なのでそれ以下のバージョンを対応する場合は場合分けが必要です.
// ViewController.swift
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = "iOS 11 Sample"
// iOS 11 からの機能
if #available(iOS 11.0, *) {
// ここで Large Title が有効になります
self.navigationController?.navigationBar.prefersLargeTitles = true
} else {
// 基本書かなくても良いと思います
// Fallback on earlier versions
}
if #available(iOS 11.0, *) {
// この ViewController でどうするか
self.navigationItem.largeTitleDisplayMode = .always
} else {
// 基本書かなくても良いと思います
// Fallback on earlier versions
}
}