0

我在应用程序的 keyWindow 上完成了动画。

[UIView beginAnimations:kAnimationLogin context:nil];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:window_ cache:NO];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];

[window_ addSubview:splitViewController_.view];

[UIView commitAnimations]; 

[loginViewController_.view removeFromSuperview];

这工作正常。然后,如果用户注销,则转换是相反的

[UIView beginAnimations:kAnimationLogout context:nil];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:window_ cache:NO];    
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];

[window_ addSubview:loginViewController_.view];

[UIView commitAnimations];

[splitViewController_.view removeFromSuperview];

这是问题所在。现在, loginViewController_ 和 splitViewController_ 不会收到方向通知。为什么?

4

1 回答 1

0

好吧,这不是一个很好的解决方案,但我找到了避免该问题的方法。首先,我认为问题出现了,因为在动画时,两个视图控制器都会收到方向通知,而我猜,在窗口中添加和删除并引发问题。我不确切知道这是否是与视图层次结构相关的问题(我想这是正确的,但我不确定)。

所以,我使用的解决方案是将LoginViewController作为SplitViewController的ModalViewController,即主控制器,并在显示时使用FlipHorizo​​ntal过渡。

这样就解决了问题。

于 2012-12-13T13:22:04.053 回答