我创建了一个支持旋转的简单iPad应用程序。它有两个视图控制器。 First View Controller
自动加载为rootViewController
的{{1}}。它上面有一个按钮,点击后会将AppDelegate
的{{1}}更改为rootViewController
。 AppDelegate
上有一个按钮,可将Second View Controller
设置回Second View Controller
。这项工作在肖像模式下非常完美。但是当我将模拟器旋转到横向模式并点击rootViewController
上的按钮以加载First View Controller
时,它会首先根据设备显示First View Controller
(未旋转),然后在完成动画后将显示旋转到正常(横向)。出了什么问题?
Second View Controller
设置Second View
的方法如下:
AppDelegate
答案 0 :(得分:0)
基本上你是在动画块中包装两个操作。
因此,您在动画期间会看到两个操作。
您可以通过应用以下更改来解决此问题:
- (void)loadSecondView {
SecondView *secondview = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil];
self.window.rootViewController = secondview;
self.window.rootViewController.view.hidden = YES;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.75];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.window cache:YES ];
self.window.rootViewController.view.hidden = NO;
[UIView commitAnimations];
}
- (void)removeSecondView {
self.window.rootViewController = self.viewController;
self.window.rootViewController.view.hidden = YES;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.75];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.window cache:YES ];
self.window.rootViewController.view.hidden = NO;
[UIView commitAnimations];
}
基本上,我们添加视图时没有任何动画效果,对于过渡动画,我们使用视图的隐藏属性。
HTH。