navigationbarとtoolbarをスクロール時やタップ時に表示/非表示する
スクロール時やタップ時にnavigationbarとtoolbarの表示/非表示を切り替えたいという話です。
twitterアプリの画像の表示の部分とかで使われていますね。
基本的なやり方
viewDidLoadかviewWillAppearあたりで
self.navigationController?.hidesBarsOnSwipe = true self.navigationController?.hidesBarsOnTap = true
でokかと思います。
ハマったとこ
- toolbarはnavigationControllerの持っているtoolbarを使います。
- toolbarのitemが0の場合は正しく動きません。
- toolbarのitemはtoolbar.setItemsではなくnavigationController.visibleViewController.setToolbarItemsを使わなければいけない
2は仕様みたいです。
3はここに書かれていて助かった。
UIToolbar: setItems and UINavigationController setToolbarItems - codeitive.com
navigationControllerの持っているtoolbarのitemはviewControllerから取得されるようなことが書いてある。
じゃあvisibleViewControllerにしなくても今のviewControllerにsetToolbarItemsすればオッケーじゃないか。
やってみたらできた。