2016-08-05 17 views
0

UIViewControllerファブリックメソッド "インデックスを使用して作成する"があります。スワイプでビューコントローラを表示/作成する

ビルドしたいのは、iPhoneのフォトギャラリーと同じです。左にスワイプします。インデックス-1のビューコントローラを作成し、右にスワイプし、インデックス+1の別のコントローラを作成します。

私はUIPageViewControllerを使用しましたが、何らかの理由で特定のスワイプの後に私に間違ったページが表示されていました。

私の結果はスワイプジェスチャーを使用してスワイプでコントローラを作成したいだけです。

しかし、左または右の1ページをスクロールするときのようにアニメーションが必要なので、アニメーションで新しいコントローラがどのように表示され、アニメーション時に「古い」コントローラが表示されます。今私は使用しています:

ギャラリーを左または右にスワイプするときのように、アニメーションを達成する方法はありますか?今それはモーダルに提示された新しいVCのように見える。あなたが質問で述べたように、あなたは左スワイプの検出のための2回のスワイプジェスチャー認識を追加する必要がありますし、効果を追加したい場合は、

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) 
     let vc = storyBoard.instantiateViewControllerWithIdentifier("ViewController") as! ViewController 
     let transition: CATransition = CATransition() 
     transition.duration = 0.5 
     transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 
     transition.type = kCATransitionReveal 
     transition.subtype = kCATransitionFromRight 
     self.view.window!.layer.addAnimation(transition, forKey: nil) 
     self.presentViewController(vc, animated:false, completion:nil) 
+0

スワイプ時に子ビューコントローラを追加してサブビューを追加できます。 –

+0

良いアイデアの兄弟:-)なぜスクロールビューで画像を設定しようとしないのですか? – user3182143

+0

@MikeAlter私はそれに必要なアニメーションを教えてください。 –

答えて

1

を望むものを左にスワイプ使用遷移サブタイプkCATransitionFromLeftのためのコードの下

+0

私が言及したように、私はまずUIPageViewControllerを使いますが、まれに、間違ったページを返すことがあります。 –

+0

もう一度お試しいただけますか?私が答えて言いましたようなコレクションビューやカスタムトランジション? – Lion

+0

コードをテストしましたか?それは奇妙な動作をしますが、最初にスワイプしますが、モーダルプレゼンテーションのように見えます。 –

1

試してみます右のスワイプ。

viewcontrollerのプッシュまたはポップ効果のような独自のトランジションエフェクトを設定する必要があります。あなたは

CATransition *customTransition = [CATransition animation]; 
customTransition.duration = 0.3; 
customTransition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
customTransition.type = kCATransitionPush; 
customTransition.subtype = kCATransitionFromRight; 
[self.view.window.layer addAnimation:customTransition forKey:nil]; 

[self presentViewController:yourViewControllerToBePresent animated:YES completion:nil]; 

ビューコントローラ閉じるとについて、(右から左にスワイプ) View Controllerを提示するために、次により

それを達成することができます(私は仮定し、左から右にスワイプを!)、

CATransition *customTransitionDismiss = [CATransition animation]; 
customTransitionDismiss.duration = 0.3; 
customTransitionDismiss.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
customTransitionDismiss.type = kCATransitionPush; 
customTransitionDismiss.subtype = kCATransitionFromLeft; 
[self.view.window.layer addAnimation:customTransitionDismiss forKey:nil]; 
[self dismissViewControllerAnimated:YES completion:nil]; 

しかし、これは私が考える最高のアプローチではありません。

あなたは多くのページを持っているなら、あなたは、細胞をdequeし、メモリ効率的であろうpaging scroll effectで単一のセルでUIPageViewControllerまたはUICollectionViewで行く必要があります!

+0

私は即時またはストーリーボードを使用していません。あなたはobj-cで例を挙げることができますか? –

関連する問題