1

他の2つのコントローラーを保持するUIViewControllerを設定しました。

MainVC -> SubVC1
       -> SubVC2

最初に、SubVC1のビューを表示します。その後、ユーザーはSubVC2のビューに切り替えることができます。

- (void)showOtherSide:(id)sender
{
   UIView *currentView = [self.view.subviews objectAtIndex:0];
   BOOL flipToRight;
   UIView *newView;
   if (currentView == subVC1.view)
   {
       newView = subVC2.view;
       flipToRight = YES;
   }
   else
   {
       newView = subVC1.view;
       flipToRight = NO;
   }

   [UIView beginAnimations:nil context:nil];
   [UIView setAnimationDuration:1.0];
   [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
   if (flipToRight)
   {
       [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:currentView cache:YES];
   }
   else
   {
       [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:currentView cache:YES];
   }

   [currentView removeFromSuperview];
   [self.view addSubview:newView];
   [UIView commitAnimations];
}

現在の問題は、シミュレーターでも最初の前後のフリップが表示されず、代わりにユーザーに新しいビューがすぐに表示されることです。アニメーションのキャッシュをYESに設定したので、次のフリップはアニメーションを表示します(少なくともほとんどの場合!)。アニメーションコードをviewDidAppear:メソッドにも入れようとしましたが、改善はありませんでした。

アニメーションを事前にキャッシュするための良い方法はありますか?

4

0 に答える 0