ニュースアプリのメニューバーを実装したくなったので、ライブラリを検討してみました。 イメージとしては以下のGunosyのメニューのようにスライドしてジャンルを切り替えるようなものです。
調べた結果良さそうだと感じたものは下記です。
- PageMenu
- PagingMenuController
- TabPageViewController
PageMenu
READMEにあるデモを見るとわかるのですが、見た目がクールでなかなかよさそうだという印象を最初に持ちました。
ただし最終コミットが執筆時点で18 Aug 2016
でSwift3に対応されていません。
以下、上記のレポジトリをフォークしてSwift3に対応しています。 こちらを使えば大丈夫です。
これはこのQiitaの記事に載っていて、このサンプルアプリを作ってみましたがなかなかよい感じでした。(このデモだと初期のメニュー下のアンダーバーがおかしいので少し手は加えましたが。)
開発がアクティブでないので不安定感はありますが、動作自体はいい感じなので、細かいことを気にしなければこれで十分だと思いました。
PagingMenuController
This library is inspired by PageMenu
とあるようにPageMenu
にインスパイアされたらしい。メルカリの人が作っているみたいです。
今月中にもコミット&リリースがなされていて、活発に開発されているみたいです。比較的新しいライブラリでSwift3にも完全対応されています。
ひとつ残念だったのはメニューをスワイプさせるとページが変わってしまうということです。一気に一番右のスライドに移動が出来なかったです。
issueが立っているのでアップデートを期待です。 これがあればこれに即採用だったのですが、現段階ではPageMenuのほうを採用したいかなという感じです。
TabPageViewController
VASILYの方が作成したライブラリです。 ブログにも載っています。
以下を参考にサンプルを作ってみましたが、第一印象は「最高」って感じでした。
http://hchckeeer.hatenadiary.jp/entry/2016/05/30/010014hchckeeer.hatenadiary.jp
しかし、一点重大な問題があって選択されているタブを画面外にはずして、他のタブをクリックするとフォーカスされたタブが2つになってしまうのです。
追記 2017.02.13
TabPageViewControllerで問題になっていた箇所を解消して頂きました! ver 0.2.3のアップデートからタブが二重にフォーカスされるバグが消えました。
なので、2017.02.13現在で最もおすすめなのは TabPageViewController
ということになりました。
終わりに
以上から結局、PageMenuを採択しようと思います。
以下の記事を参考にして作業を進めたいと思います。
PagingMenuController、TabPageViewControllerのアップデートがあればそちらのほうを使いたいところです。