2017-02-10 10 views
2

メインビューコントローラを下にスワイプし、2番目のビューコントローラを上から下にしたいと思っています。私はこの移行をインタラクティブにすることができます。つまり、ページングを使ってスクロールビューのようなユーザーの指に従うことで、移行全体を完了することなくVC間を行き来することができます。パンジェスチャ認識機能を使用してビューコントローラを停止する

これは、新しいスナップファームアップデートでView Controller間をスライドさせるときに表示される効果です。最初にアプリを開くと、カメラの画面に表示されます。任意の方向(上下、左右、または左右)にスワイプすると、対応するビューが表示され、カメラの画面が覆われます。ビュー間でスワイプすると、基本的にメインビューが覆い隠されます(この効果を達成するためにscrollviewを使用するオンラインの多くのチュートリアルのように、それをサイドに移動しません)。

本質的には、垂直ページビューコントローラのように見えますが、新しいビューコントローラが画面に表示されたときに現在のビューコントローラを移動するのではなく、新しいビューコントローラが現れます。

私が理解するところでは、パンジェスチャ認識プログラムがこのトリックを行うことができます。 誰も私がこれをやり遂げる方法について知っていますか?私は永遠に探していて、それを理解しているようには見えません。

答えて

2

メインビューコントローラをスワイプして、2番目のビューコントローラを上から下にしたいと思っています。このトランジションをインタラクティブにしたいです。

さて、あなたはカスタムのインタラクティブなトランジションアニメーションについて説明しています。これを実装する方法の詳細は、これをプッシュトランジションか現行(モーダル)トランジションにするかによって異なります。私はそれがプレゼンテーション(モーダル)の移行であると仮定します。

これで、表示されたビューコントローラのtransitioningDelegateを設定することから始めます。すべてがそこから離れる。パンジェスチャー認識はpresent、 を呼び出しますし、移行デリゲートのデリゲートメソッドが呼び出されます:あなたは第二の方法から復帰

  • animationController(forPresented:presenting:source:)
  • interactionControllerForPresentation(using:)

対話コントローラが応答する責任がありますアニメーションの「フレーム」(およびトランジションコーディネータ)を更新することによって、パンジェスチャの各変更に割り当てることができる。

iOS 10のみの場合は、UIViewPropertyAnimatorを使用できるため、これは非常に簡単です。ジェスチャーが終了し、アニメーションの完了またはキャンセルを決定したときに、アニメーションの終了または開始に「急いで」する顕著な能力があります。それ以外の場合は、UIPercentDrivenInteractiveTransitionオブジェクトを使用して手助けをすることをおすすめします。

+0

これは私が必要とするものですが、これはどのように動作するのか理解していますが、実装方法を理解する上で問題があります。もしあなたが気にしないなら、ちょっとだけ説明してください。 – user6520705

+0

それはかなり関わっている。ほとんどの場合、基本が何であるかを述べたので、これを調べ始める必要があります。これが提示されたビューコントローラであるかプッシュされたビューコントローラであるかを明確にするのに役立ちます。また、例やチュートリアルを探すのも便利です。 – matt

+0

インタラクティブに提示されたビューコントローラの例はありませんが、別の種類のトランジション用のものがありますので、ダウンロードして試してみてください:https:// github。com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch06p296customAnimation2/ch19p620customAnimation1/AppDelegate.swiftこれは横からドラッグして次のビューを表示するタブバーコントローラです。このコードは、ジェスチャーとアニメーターの間の相互作用を示しています。 – matt

関連する問題