1

我创建了一个支持旋转的简单 iPad 应用程序。它有两个视图控制器。从 开始First View Controller自动加载。它上面有一个按钮,单击该按钮时会将 的更改为。上面有一个按钮,它设置回。这项工作在人像模式下完美。但是当我将模拟器旋转到横向模式,并单击按钮加载时,它首先根据设备显示(未旋转,然后在完成动画后将显示旋转到正常(横向)。出了什么问题?设置方法如下:rootViewControllerAppDelegaterootViewControllerAppDelegateSecond View ControllerSecond View ControllerrootViewControllerFirst View ControllerFirst View ControllerSecond View ControllerSecond View AppDelegateView 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];    
}
4

1 回答 1

0

基本上,您将两个操作包装在一个动画块中。

  1. 制作一个新的视图控制器作为根视图
  2. 在 curl 动画中显示该视图

因此,您会在动画期间看到两个操作。

  1. 新视图被添加到窗口中,并根据设备的方向旋转
  2. curl 动画使新视图可见

您可以通过应用以下更改来解决此问题:

- (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。

于 2012-05-03T05:29:58.060 回答