2016-09-29 5 views
5

Instagramsの新機能「ストーリー」(あるストーリーから別のストーリーに移動するときにキューブのような移行が起こっていることを知っています)をスワイプすると、その動作を理解できません。あなたが機能に深く掘る場合iOSでInstagram Storiesキューブの移行はどのように行われますか?

まず第一に、あなたはそれが正確にUIPageViewControllers遷移と同じように動作することを見つける:

- 別の観点から、高速スワイプするときに跳ね返ります。
- 画面をタッチすると、移行の途中でスワイプを一時停止できます。

開発チームは、そこに例えばより知られている回避策に基づいたソリューションを使用していませんでした:
https://www.appcoda.com/custom-view-controller-transitions-tutorial/
私の知る限りでは上記の私の2文はより何か他のものでは達成することは不可能であるため、 PageViewController。

これは、Instagram Developer TeamがCube-scrollとも呼ばれるPageViewControllerの新しいトランジションスタイルにアクセスしたと思っていますか、それとも私が気づいていない回避策ですか?

アイデア?

+1

あなたの2つの点が 'UIPageViewController'をどのように暗示しているかわかりません。 [ここ](https://developer.apple.com/videos/play/wwdc2016/216/)では、2つのView Controller間でインタラクティブなインタラクティブなカスタムトランジションを作成する方法について説明しています。 – beyowulf

+0

最初の点では、スワイプのスクロール操作を行うと、次のビューへのページングが行われますが、スワイプのジェスチャーが非常に速いので、ページングも次のビューにバウンスするので、そのビューのピクセルも表示されます正しいビューにバウンスする前に その動作は、私がUIPageViewControllerまたはScrollViewsでページングを有効にして見ただけのものです。 私はビデオを見ていきます。私はこれのための実用的な解決策を見つけるつもりであるので、私はそれを解決するための答えまたはいくつかのヒントを感謝します。 – alengqvist

答えて

5

私はこの機能をしばらく作り直してみました。

私はスクロールビューを使用しています(ページングを有効にしています)。各サブビューについて、これらをスクロールの現在のビューの現在のxオフセットの関数として操作しています。ビュー。実際のアニメーションは、コアアニメーション(具体的にはCATransform3DIdentityで与えられる単位行列の変換、CATransform3DRotate)を使用して各サブビューのレイヤーで行われます。

影の効果はサブビューのレイヤー(view.layer.opacity)にも適用され、どのくらいの大きさの影が画面に表示されているかによって決まります。

私の実装は、あなたの懸念(スワイプ時のバウンス、スワイプの一時停止)を解決します。私はこれもUIPageViewControllerを使って実装できたと確信していますが、それらを使って作業するのは嫌です。

+0

ios 8でこの作業を行う方法を知っていますか?私はそれを変更する方法はありますか?私は本当にこれを使いたい、それは私がやっていることには完璧ですが、実際には私のアプリケーションをIOS 8に対応させておきたいと思っています。 –

+0

それを使いたいのは素晴らしいことです。私はコードを見てからしばらくしていますが、私はこれについてあなたに連絡しましょう。 –

+1

@WayneFilkinsだから、私がiOS 8をサポートしていないのは、iOS 9からしか利用できないUIStackViewを使用しているからです。このクラスは実装の基本的な部分であるため、簡単には削除できません。これにつきましては申し訳ございません。 –

0

あなたはコントローラの部分をここでは思っていると思います。この効果は、CATransformLayerと3面立方体様のビュー構造を使用して簡単に達成できます。ビュー構造には画面平面に合わせて1つのビューがあり、他の2つはy軸で-90と90度回転しています。次に、パンジェスチャーを取得してシーンを回転させます。 90度回転(いずれかの方向)に成功した後は、シーンをすばやくリセットすることができます(回転を維持するように表示されますが、実際にカメラは元の位置に戻されます)前後の「ページ」を更新するだけです。単一のコントローラがこのシーンを処理できます。各ページをコントローラとして使用する場合は、シーン用に1つのコントローラを使用してから、ページコントローラを子コントローラとして使用し、上記のようにビューを設定することもできます。

CATransformLayerの詳細については、thisの記事を参照してください。それらの例は、あなたが必要とするものに非常に近いものを作成しています。

関連する問題