ほろ酔い開発日誌

AI企業のエンジニアのブログです。機械学習、Web開発の技術的お話、ビジネスチックなお話、日常のお役立ち情報など雑多な内容でお送りします。

【Swift3】ニュースアプリ風の横スクロールメニューバーライブラリ3つの検討

ニュースアプリのメニューバーを実装したくなったので、ライブラリを検討してみました。 イメージとしては以下のGunosyのメニューのようにスライドしてジャンルを切り替えるようなものです。

f:id:seishin55:20170131112756p:plain:w300

調べた結果良さそうだと感じたものは下記です。

  • PageMenu
  • PagingMenuController
  • TabPageViewController

PageMenu

github.com

READMEにあるデモを見るとわかるのですが、見た目がクールでなかなかよさそうだという印象を最初に持ちました。

ただし最終コミットが執筆時点で18 Aug 2016 でSwift3に対応されていません。

以下、上記のレポジトリをフォークしてSwift3に対応しています。 こちらを使えば大丈夫です。

github.com

これはこのQiitaの記事に載っていて、このサンプルアプリを作ってみましたがなかなかよい感じでした。(このデモだと初期のメニュー下のアンダーバーがおかしいので少し手は加えましたが。)

qiita.com

開発がアクティブでないので不安定感はありますが、動作自体はいい感じなので、細かいことを気にしなければこれで十分だと思いました。

PagingMenuController

github.com

This library is inspired by PageMenu とあるようにPageMenu にインスパイアされたらしい。メルカリの人が作っているみたいです。 今月中にもコミット&リリースがなされていて、活発に開発されているみたいです。比較的新しいライブラリでSwift3にも完全対応されています。

ひとつ残念だったのはメニューをスワイプさせるとページが変わってしまうということです。一気に一番右のスライドに移動が出来なかったです。

github.com

issueが立っているのでアップデートを期待です。 これがあればこれに即採用だったのですが、現段階ではPageMenuのほうを採用したいかなという感じです。

TabPageViewController

github.com

VASILYの方が作成したライブラリです。 ブログにも載っています。

tech.vasily.jp

以下を参考にサンプルを作ってみましたが、第一印象は「最高」って感じでした。

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を採択しようと思います。

以下の記事を参考にして作業を進めたいと思います。

qiita.com

x1.inkenkun.com

PagingMenuController、TabPageViewControllerのアップデートがあればそちらのほうを使いたいところです。