2012-05-02 13 views
1

ローテーションをサポートするシンプルなiPadアプリケーションを作成しました。それは2つのビューコントローラを持っています。 First View ControllerAppDelegaterootViewControllerとして自動的にロードされます。ボタンをクリックすると、rootViewControllerAppDelegateSecond View Controllerに変更されます。 Second View Controllerにはボタンがあり、rootViewControllerFirst View Controllerに戻します。この作品はポートレートモードで完璧です。私は風景モードにシミュレータを回転させ、そしてSecond View ControllerをロードするFirst View Controller上のボタンをクリックした場合には、それは、第1のデバイス(非回転)に従ってSecond Viewを表示し、その後、通常(横にディスプレイを回転させます)、アニメーションを完了した後。何がうまくいかないのですか?次のようにView Controllersを設定するAppDelegateで 方法は以下のとおりです。iOS - iPadを回転時に正しく読み込めない

(void)loadSecondView 
{ 
    SecondView *secondViewController = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil]; 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.75]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.window cache:YES ];  
    self.window.rootViewController = secondViewController; 
    [UIView commitAnimations];  
} 


(void) removeSecondView 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.75]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.window cache:YES ]; 
    self.window.rootViewController = self.firstViewController; 
    [UIView commitAnimations];  
} 

答えて

0

は、基本的には、アニメーションブロック内の2つの操作をラップしています。その結果、ルートビューカールアニメーション

でそのビューを示す

  • として新しいビューコントローラを作る

    1. 、あなたはアニメーション中に2つの操作を参照してください。

      1. カールアニメーションが

      新しいビューが表示されるようになり、デバイスの向きに基づいて、新しいビューがウィンドウに追加され、それが回転していますあなたは次のように変更を適用することによって、この問題を解決することができます

      - (void)loadSecondView { 
          SecondView *secondview = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil]; 
          self.window.rootViewController = secondview; 
          self.window.rootViewController.view.hidden = YES; 
      
          [UIView beginAnimations:nil context:NULL]; 
          [UIView setAnimationDuration:0.75]; 
          [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.window cache:YES ];  
          self.window.rootViewController.view.hidden = NO; 
          [UIView commitAnimations]; 
      } 
      
      - (void)removeSecondView { 
          self.window.rootViewController = self.viewController; 
          self.window.rootViewController.view.hidden = YES; 
      
          [UIView beginAnimations:nil context:NULL]; 
          [UIView setAnimationDuration:0.75]; 
          [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.window cache:YES ]; 
          self.window.rootViewController.view.hidden = NO; 
          [UIView commitAnimations]; 
      } 
      

      基本的に、アニメーション効果のないビューを追加しています。トランジションアニメーションでは、ビューの非表示プロパティを使用しています。

      HTH。

  • +0

    ありがとうございましたMustafa。意味あり。 私はこのソリューションを実装しており、魅力的に機能しました。おかげさまで –

    関連する問題