他の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:メソッドにも入れようとしましたが、改善はありませんでした。
アニメーションを事前にキャッシュするための良い方法はありますか?