iOS - 旋转时在iPad中查看无法正确加载

时间:2012-05-02 14:48:57

标签: objective-c ios ipad uiviewcontroller

我创建了一个支持旋转的简单iPad应用程序。它有两个视图控制器First View Controller自动加载为rootViewController的{​​{1}}。它上面有一个按钮,点击后会将AppDelegate的{​​{1}}更改为rootViewControllerAppDelegate上有一个按钮,可将Second View Controller设置回Second View Controller。这项工作在肖像模式下非常完美。但是当我将模拟器旋转到横向模式并点击rootViewController上的按钮以加载First View Controller时,它会首先根据设备显示First View Controller 未旋转,然后在完成动画后将显示旋转到正常(横向)。出了什么问题? Second View Controller设置Second View的方法如下:

AppDelegate

1 个答案:

答案 0 :(得分:0)

基本上你是在动画块中包装两个操作。

  1. 将新视图控制器设为根视图
  2. 以卷曲动画显示该视图
  3. 因此,您在动画期间会看到两个操作。

    1. 新视图已添加到窗口中,并根据设备的方向进行旋转
    2. 卷曲动画使新视图可见
    3. 您可以通过应用以下更改来解决此问题:

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