2

我怎么可能更改呈现模式视图控制器的过渡。呈现过渡是否有可能使用默认的 UIModalTransitionStyle....

UIModalTransitionStyleCoverVertical = 0,
UIModalTransitionStyleFlipHorizontal,
UIModalTransitionStyleCrossDissolve,
UIModalTransitionStylePartialCurl, 

但解除过渡使用 UIViewAnimationTransitionCurlUp 过渡。重要的是我不想使用 UIModalTransitionStylePartialCurl 它应该是 CurlUp 之一。

可悲的是,以下代码不起作用:

[UIView transitionFromView:self.view toView:self.parentViewController.parentViewController.parentViewController.view duration:1.0 options:UIViewAnimationTransitionCurlUp completion:^(BOOL finished) {....}];

也许它与视图控制器以模态模式显示有关。

如果有人可以提供帮助,那就太好了。

4

1 回答 1

1

感觉很笨拙,但是您可以通过动画添加目标视图控制器视图的过渡来做到这一点,但完成后,您立即再次将其删除,然后通过正确过渡到它presentViewController(这次没有动画,因为视觉效果已经呈现)。

我在子类自定义中执行此操作UIStoryboardSegue(您没有说 NIB 或故事板,但概念是相同的):

- (void)perform
{
    UIViewController *src = self.sourceViewController;
    UIViewController *dst = self.destinationViewController;

    [UIView transitionWithView:src.navigationController.view
                      duration:0.75
                       options:UIViewAnimationOptionTransitionCurlUp | UIViewAnimationOptionCurveEaseInOut
                    animations:^{
                        [src.navigationController.view addSubview:dst.view];
                    }
                    completion:^(BOOL finished){
                        [dst.view removeFromSuperview];
                        [src presentViewController:dst animated:NO completion:nil];
                    }];
}

显然,如果您的源视图控制器没有导航控制器,您可以将那些“ src.navigationController.view”替换为“ src.view”。但希望这能给你这个想法。

并且,期待逻辑后续问题,在关闭视图控制器时,我有一个按钮连接到IBAction

- (IBAction)doneButton:(id)sender 
{
    [UIView transitionWithView:self.view.superview
                      duration:0.75
                       options:UIViewAnimationOptionTransitionCurlDown
                    animations:^{
                        [self dismissViewControllerAnimated:NO completion:nil];
                    }
                    completion:nil];
}
于 2012-10-04T15:01:49.350 回答