はじめに
今回はUITableView
やUIScrollView
を実装したページでスクロールした時に、ナビゲーションバーが隠れるAMScrollingNavBar
というプラグインを使ってみました。
もちろんcocoapods
に登録されています。
tableView
とかcollectionView
を見せるときに、できるだけ多くの情報を見せたいなー(見たいなー)って思ったので、使ってみました。
ページに遷移した時は、そこがどのページがわかるようにタイトルは表示するべきだと思いますが、それ以降は特にいらないかと思います。
iOS(特にiPhone)の1つのページの情報量なんてたかがしれていると思うので、その情報に集中出来るようにしたいなと思い、このプラグインを使ってみることにしました。
ryokosuge/SampleAMScrollNavBar
使ってみた感想
とにかく導入が簡単で、delegate
やらdatasource
を追加することなく導入することが出来ます。
ただこのプラグインはプラグイン名からもわかるようにNavigationBar
専門になります。
TabBar
は対応していないので、お気をつけください。
(ソースを読んだ感じ、TabBar
の処理はなにもなかった...)
なので、メニューがない or サイドメニューを導入していて(TabBar
を使っていない)スクロールするページがある場合には導入する価値があると思います。
しかし、このライブラリを使う上で制限があるので、そこについても書いておきたいと思います。
良かった点
導入が簡単
これにつきます。
制限に則っていれば1行追加するだけで済みます。
UITableView
を使っている場合、まずライブラリの<AMScrollingNavbar/UIViewController+ScrollingNavbar.h>
をインポートした状態で
- (void)viewDidLoad
{
[super viewDidLoad];
[self followScrollView:self.tableView withDelay:6.0];
}
と実装すれば導入完了です。
とっても簡単ですね。
こういうプラグインは結構需要があると思うので、まずは試しに使ってみることをおすすめします!
複雑なことはしないで済む
これも結構重要な部分だと思います。
独自実装のプラグインだとdelegate
やdatasource
を実装しないと行けないやつが多いです。
そういうのを導入する度に、delegate
のこのメソッドはいつ呼び出されるのかの確認等がとってもめんどくさいです。
逆に言えば、なにもcallbackは受け取れません。
このプラグインで言えばUINavigationBar
が隠れた時とか表示した時のcallback
メソッドを実装したという場合は使えません。
そういうことをしたかったら他のプラグインを使えということなんですかね。
とにかく邪魔するものもなく、ソースコードを汚すこともないので、とってもオススメです。
悪かった点
制限あり
これはandreamazz/AMScrollingNavBarのREADME.mdに書いてあるんですが、これを守らないと使い物になりません。
ということで紹介していきます。
Make sure to have a barTintColor for your UINavigationBar, or you won't see the fade-in and fade-out effects. Also make sure that you are not using a translucent navigation bar. E.g., in your controller:
[self.navigationController.navigationBar setTranslucent:NO];
絶対にtranslucent
はNO
にしてください。
これはソースコードでも、storyboardでやっても同じでした。
ソースコードの場合は
[self.navigationController.navigationBar setTranslucent:NO];
ですね。
またview constraints
もしっかり指定してください。
僕は最初StoryboardのUITableView
で実装していたのですが、やっぱこういうのにむいてないですね。
なのでUIViewController
にUITableView
を乗っけました。
その時のView Constraints
は以下の様にしました。
という感じでうまく実装できました。
以上になります。