2011-03-10 7 views
3

フリップトランジションフリップトランジションフリップトランジションのためにこのコードを使用しています。

MyViewController *viewController = [[MyViewController alloc] init]; 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:YES]; 
[self.navigationController pushViewController:viewController animated:NO]; 
[UIView commitAnimations]; 
[viewController release]; 

右からフリップする代わりに、上から反転します。私のアプリケーションは風景モードでのみ動作します。

助けてください。

+0

私はhaventこの質問を投稿しても、私はこれが完全にbizzare – ingsaurabh

答えて

0

アニメーション定数は、ポートレートモードを念頭に置いて定義されています。アプリケーションをランドスケープモードのみに定義する場合、ヘッドを90度傾けてアニメーション定数を考える必要があります。

はあなたが

[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.navigationController.view cache:YES]; 

でアニメーションを設定するよりも、あなたのデバイスのトップは、左に題されましょう、それが右からカールます。この場合、デバイスの底面が右を向いているからです。

悪いことは、UIViewAnimationTransitionFlipFromBottomが定義されていないことです。あなたはアニメーションの座標系を90度回転させることができると思いますが、私はそれを手伝ってはいけません。

1

AppleがこのAPIを開発したときに考えていたことは分かりません。私が使用した回避策は次のとおりです。

// Assume this code is in a view controller subclass 
- (UIViewAnimationOptions)viewAnimationOptionTransitionFlipFromRight 
{ 
    switch (self.interfaceOrientation) { 

     case UIInterfaceOrientationPortrait: 
      return UIViewAnimationOptionTransitionFlipFromRight; 

     case UIInterfaceOrientationLandscapeLeft: 
      return UIViewAnimationOptionTransitionFlipFromBottom; 

     case UIInterfaceOrientationLandscapeRight: 
      return UIViewAnimationOptionTransitionFlipFromTop; 

     case UIInterfaceOrientationPortraitUpsideDown: 
      return UIViewAnimationOptionTransitionFlipFromLeft; 
    } 
} 

異なる方向に反転したい場合は、コードを調整してください。しかし、ページのカールのトランジションを使用したい場合、私はあなたが完全に運のないかもしれないと恐れています。

関連する問題