質問: 添付の画像のように、FacebookやInstagram, TwitterなどのサービスではTableViewなどのCellをタップして詳細を見るVCへSegueで遷移させています。 そのdestinationViewController(以下「詳細VC」)から、元のViewController(以下「一覧VC」)に戻る時に2種類手段を用意している認識なのですが、 1. 左上のBackボタン 2. SwipeもしくはVCを長めにPressしてUnwind Segueをcallする 2の場合の長めにVCをpressした場合に詳細VCを左右自由に動かせるようになっていると思うのですが、これはどのように実現されるのでしょうか。 swipeで呼ぶ場合は、unwind segueをcallして単純に戻れると思うのですが、長めにpressした場合は、途中まで詳細VCを右に動かして、左に戻すといったことができますが、方法がわかりません。 おわかりになる方教えていただけませんでしょうか。よろしくお願いいたします。 ![Twitter](https://i.stack.imgur.com/QFxqa.png) ↑unwind segueを途中でとめたりコントロールすることができる
回答: `UINavigationController`を利用して表示すれば、デフォルトでそのような見た目になります。 これはインタラクティブ画面遷移と呼ばれる仕組みで実現されています。 原理としては単純で、`UINavigationController`を利用して表示した`UIViewController`は、自動的にビューに`UIScreenEdgePanGestureRecognizer`が付与されているのです。 この`UIScreenEdgePanGestureRecognizer`は、エッジスワイプの量に応じて、2つのView Controllerのトランジションを制御しています。 このトランジションの実装は、公式ドキュメントのView Controller Programming Guide for iOSの、Customizing the Transition Animationsを参照してみてください。 日本語でも検索すれば出てくると思いますが、恐らくこれが実装されたiOS7の頃のObjective-Cで書かれた解説ばかりかもしれません(こうした細かなトピックスに関して、iOS9対応/Swift2で記述された情報はまずないです)。