5

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

我根据文档中的示例编写了我的代码。

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

(我已经尝试实现这个答案中提出的解决方案,但是屏幕在转换后变黑,或者恢复到源视图控制器。)

这是我的代码:

-(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];
}
4

1 回答 1

3

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

当您编写自定义 segue 时,您不会同时拥有两个视图。你也可以

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

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

于 2012-07-30T11:18:39.697 回答