2012-09-07 33 views
2

我怎么可能改变呈现模态视图控制器的转换。是否有可能将呈现过渡使用默认UIModalTransitionStyle ....使用presentModalViewController但使用modeUIViewAnimationTransitionCurlUp

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) {....}]; 

也许这事做的视图控制器显示在模态模式。

这将是很好,如果有人可以帮助。

+0

顺便说一句,'presentModalViewController'已被弃用。你可以使用'presentViewController'。 – Rob

回答

1

它感觉很糟糕,但是您可以通过动画添加目标视图控制器视图的转换来完成此操作,但完成后,您立即再次将其删除,然后通过presentViewController(此时无动画,因为视觉效果已经被渲染)。

我这样做是一个子类的自定义UIStoryboardSegue(你没有说发钞银行或情节串连图板,但概念是相同的):

- (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.view”代替那些“src.navigationController.view”。但希望这给你的想法。

而且,预期的逻辑后续问题,驳回视图控制器的时候,我已经迷上了一个IBAction按钮:

- (IBAction)doneButton:(id)sender 
{ 
    [UIView transitionWithView:self.view.superview 
         duration:0.75 
         options:UIViewAnimationOptionTransitionCurlDown 
        animations:^{ 
         [self dismissViewControllerAnimated:NO completion:nil]; 
        } 
        completion:nil]; 
} 
相关问题