我在应用程序的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_不会收到方向通知。为什么呢?
答案 0 :(得分:0)
嗯,这不是一个很好的解决方案,但我找到了避免这个问题的方法。首先,我认为问题的出现是因为,在动画时,两个视图控制器都接收到方向通知,而我猜测,是否会在窗口中添加和删除并引发问题。我不确切知道这是否与视图层次结构相关(我认为这是正确的,但我不确定)是否存在问题。
所以,我使用的解决方案是将LoginViewController作为SplitViewController的ModalViewController,即主控制器,并在显示时使用FlipHorizontal转换。
解决了这个问题。