源视图控制器在自定义segue期间隐藏

时间:2012-07-30 10:43:27

标签: ios core-animation uistoryboard uistoryboardsegue

我正在尝试制作自定义segue,以便目标视图控制器从顶部向下滑动。

我根据the documentation中的示例编写了我的代码。

问题是当执行segue时,源视图控制器变黑,然后动画发生。如何防止源视图控制器变黑?

(我已经尝试实现this answer中提供的解决方案,但屏幕在转换后变为黑色,或者恢复为源视图控制器。)

这是我的代码:

-(void)perform{

    UIViewController *splashScreen = self.sourceViewController;
    UIViewController *mainScreen = self.destinationViewController;

    //Place the destination VC above the visible area        
    mainScreen.view.center = CGPointMake(mainScreen.view.center.x,
                                          mainScreen.view.center.y-600);

    //Animation to move the VC down into the visible area
    [UIView animateWithDuration:1
                     animations:^{
                         mainScreen.view.center = CGPointMake(mainScreen.view.center.x, [[UIScreen mainScreen] bounds].size.height/2 );
                     }
     ];

    [splashScreen presentModalViewController:mainScreen animated:NO];
}

1 个答案:

答案 0 :(得分:3)

您的源视图控制器似乎被隐藏的原因是目标视图控制器立即显示。

在编写自定义segues时,您不能同时使用这两个视图。你可以

  • 推送视图控制器,将源视图添加到目标视图控制器并设置动画
  • 将目标视图添加到源视图控制器并设置动画,然后按视图控制器
  • 推送到中间视图控制器,添加两个视图,动画,推送到目标视图控制器。

在上述所有情况下,我说推视图控制器,你可以改为以模态方式呈现视图控制器。实际上,这可能更适合于中间视图控制器解决方案。