我已经设置了一个 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: 方法中,但没有任何改进。
预缓存动画有什么好的做法吗?