Edited at
Swift-2Day 25

iPhone6Plusみたいなデカい端末のせいかわからないけど最近のiOSの戻るについて

More than 3 years have passed since last update.

ようやく業務でswiftを触ることになったのですが、そこで感じた最近のiOSの「戻る」について思ったことを何となく書いていきます。

なのでswiftの話というかはiOSの話です。アドベントカレンダーに自分も急に参加してみたくなったのです、お許しを・・。


当たり前の話だけど、iPhone6Plusだと左上の戻るボタンを押すのは至難の業。画面左端を右スワイプするいわゆる「エッジスワイプ」(iOS7からUINavigationControllerでデフォでついているやつ)すらキツい。

写真 2014-12-23 11 24 34.jpg

ということで、iPhone6Plusのせいかはわからないけれど、有名どころのアプリをいくつか触ってみての「戻る」まわりの所感、及びそれに関する技術的なことも少し交えて何か書いていけたら。


フルスクリーン右スワイプ

Flipboard(ver3.1)の記事詳細画面やInstagram(ver6.4.1)のいいね一覧なんかをみてみると、画面のどこからでも右スワイプすれば前の画面に戻れるようになっている。

写真 2014-12-23 11 24 37.jpg

写真 2014-12-24 19 54 09.jpg

指の負担としてはかなり低いほうなので、通常のUINavigationControllerの画面遷移を考慮して設計されたアプリであり、特に複雑なジェスチャ処理の組み込みを想定していないのであれば、自分はこれでいいんじゃないかと思ったりもする。

自分はいまSloppySwiperというライブラリを入れてみて試してみているけれど、デザイナーメンバーにも触ってみてもらって感触としては良さげ。

これを書いてる時点で、Starsの数が300くらい&採用例の記事も見つからないので動作的にはまだ様子見だけど、不具合はいまのところないです(そんな難しいことしてるわけでもないし)。


モーダル表示

Tumblr(ver3.7.5)のリアクションは、多くのアプリでpushViewControllerしているところをモーダル表示にしている。

写真 2014-12-23 11 51 48.jpg

戻るにはどうすればいいかというと、まわりのブラーの部分をタップすればOK。

これもすごい楽でいいのですが、モーダル表示ってデザイン設計だったりIAの視点からみたときに、アプリ内でのルールだったり見せ方の重み付けみたいなことを考慮しなくちゃだろうから、エンジニアが勝手に実装するのは良くないとは思います。

Tumblrが実際にどうやって実装しているかは知らないですが、これぽいものはカスタムトランジッションで実現できる。

カスタムトランジッションについては

http://qiita.com/335g/items/94762b06a66cfb3be6ad

らへんの記事に実装方法あるので参考にすれば簡単に実装できる。

トランジッションというか遷移の「様相」については、"UIViewControllerAnimatedTransitioning"をプロトコルにもったファイルにガリガリ書いていく感じになるのですが、キレイに粗結合になるので使い回しも楽だし、もともとflashやってた自分としてはどこか懐かしく楽しい。

そんなのつくってる暇ないよーというときは、githubからそれぽいものをもってきてパラメータなりを自分の好きなように変えるとかでいいと思う。

自分もStorehouseのトランジッションのライブラリで最初勉強しました。

https://github.com/coolbeet/CBStoreHouseTransition


いろんな方向へ引っぱり系

他にもFacebookのGroups(ver3.0)やSiori(1.4.0)のように下に引っ張って前の画面に戻るものだとか、

写真 2014-12-23 11 51 02.jpg

写真 2014-12-24 19 55 07.jpg

Storehouseに至ってはストーリー詳細画面から4方向どこへ引っ張っても戻ることがきる。

写真 2014-12-23 12 08 28.jpg

ここらへんは現時点ではかなり進んでいるユーザ体験だと自分の中では認識していて、今度こういった感じのものが標準搭載されていったりするのかななんて思っています。


まとめ

こうみていくともはや何でもありのように感じるけど、一番のポイントはアプリの画面設計に沿って採用しないと破綻するかもしれないから気をつけようということ。

さきほどの「下に引っ張って前の画面に戻る」は、当然のことながらUITableViewのリフレッシュ(更新)がないことを前提にしているわけで、プロデューサ的な人からここリフレッシュは絶対なくちゃ困りますみたいなことになったらorzですもんね。

とか「フルスクリーン右スワイプ」も、横スワイプして前・次ページに遷移したいなんていわれたときには使えない。

以上、メリークリスマス。。