2009-08-04 12 views
2

iPhoneでのフリップの問題に直面しています。iPhoneでの反転のフリップフック

私はappDelegateに2つのビューを持っています。ユーザーがボタンをクリックすると、それらを反転させたい

私は、次のコードを持っている:

CATransition *transition = [CATransition animation]; 

transition.duration = 0.75; 
[transition @"twist"]; 
[transition setSubtype:@"fromRight"]; 

transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
[transition setFillMode:@"extended"]; 

[[window layer] addAnimation:transition forKey:nil]; 


[window addSubview:self.s.view]; 
[CATransaction commit]; 

をしかし、これは動作しません。誰もウィンドウ側のビューを反転する良い方法を知っていますか?

私がやっているのは、それぞれのviewControllerのappDelegateからメソッドを呼び出してビューを反転させることです。

+0

[transition @ "twist"]; < - それは間違いですか?それは何ですか? – mk12

答えて

4

The Elementsサンプルコードを参照してください。特にAtomicElementViewController-flipCurrentView

+0

コンテンツビューの代わりに、次のようにウィンドウを追加する必要があります。 [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:ウィンドウキャッシュ:はい]; コンテンツビューを使用してウィンドウ側で操作したくない場合は、 – rkb

+0

なぜ私は窓自体でそれをやるのだろうかと不思議です。これは非常に珍しいアプローチです。一般的には、ウィンドウのcontentViewを使用し、ウィンドウを単独のままにします。 –

17

3.0 SDKを使用していて、単純なフリップトランジション(天気アプリ)が必要な場合は、CATransitionに移動する必要はありません。より高いレベルのUIViewアニメーショントランジションはあなたが望むことを行いますが、3.0ではさらに簡単な方法があります:新しいビューをモーダルビューコントローラとして表示し、モーダルトランジションスタイルをフリップするように設定するだけです。第1のコントローラ内から:

UIViewController *controllerForSecondView = ..; 
controllerForSecondView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
[self presentModalViewController:controllerForSecondView animated:YES]; 

dismissModalViewControllerを使用して再び反転。

Documentation Reference

+0

すばらしいチップをありがとう! NB:誰も読んでいる:Jaredの答えによると、設定は 'self'ではなく 'controllerForSecondView'に設定する必要があります。 –

+0

Jaredが初めて自分の答えを投稿したとき、まあまあ、私はこの年前に編集していたはずです。私はこれを修正しました。 –

6

@Luke - おかげで、このサンプルは、私を助けた... 1つの補正かかわらず(UIViewController.hに基づく)

UIViewController *controllerForSecondView = ..; 
controllerForSecondView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
[self presentModalViewController:controllerForSecondView animated:YES]; 

ヘッダファイルのコメント:

//このビューコントローラがモーダル表示されているときに使用されるトランジションスタイルを定義します。プレゼンターではなく、表示コントローラー上のこのプロパティーを提示するように設定します。 //デフォルトはUIModalTransitionStyleSlideVerticalです。 @property(非アトミック、代入)UIModalTransitionStyle modalTransitionStyle

+0

よく目撃された!私はそれを見逃しているに違いないが、実際にあなたが書いているコードを実行していないときに得られるものだ;) –