[英]iOS - View not loading properly in iPad when rotating
我创建了一个带有旋转支持的简单iPad应用程序。 它有两个视图控制器 。 First View Controller
作为AppDelegate
rootViewController
自动加载。 它上面有一个按钮,单击该按钮rootViewController
AppDelegate
的rootViewController
更改为Second View Controller
。 Second View Controller
有一个按钮,可将rootViewController
设置回First View Controller
。 可以在人像模式下完美工作。 但是,当我将模拟器旋转到横向模式,然后单击“ First View Controller
上的按钮以加载Second View Controller
,它将首先根据设备显示Second View
( 未旋转 ) ,然后将显示旋转到正常状态(完成动画后的横向)。 怎么了? AppDelegate
用于设置View Controllers
的方法如下:
(void)loadSecondView
{
SecondView *secondViewController = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.75];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.window cache:YES ];
self.window.rootViewController = secondViewController;
[UIView commitAnimations];
}
(void) removeSecondView
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.75];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.window cache:YES ];
self.window.rootViewController = self.firstViewController;
[UIView commitAnimations];
}
基本上,您是将两个操作包装在动画块中。
结果,您在动画期间看到了两个操作。
您可以通过应用以下更改来解决此问题:
- (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];
}
基本上,我们添加的视图没有任何动画效果,对于过渡动画,我们使用视图的hidden属性。
HTH。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.