带过渡的dismissModalViewController:从左到右 [英] dismissModalViewController with transition: left to right

查看:31
本文介绍了带过渡的dismissModalViewController:从左到右的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用了一个很好的方法来关闭我的模态视图控制器:

I was using a nice method to dismiss my modal view controller:

[self dismissModalViewControllerWithTransition:2];

从左到右进行滑动过渡,就像导航控制器弹出视图一样.

which makes a slide transition from left to right, like a navigation controller does to pop a view.

由于该方法是非公开方法,苹果不会接受.如何在我的代码中编写这种动画(从左向右滑动,关闭模态视图,从右向左滑动以呈现模态视图)?

As this method is a non-public method, apple will not accept it. How can I program this kind of animation in my code (slide from left to right, to dismiss a modal view, and slide from right to left to present a modal view) ?

提前致谢

推荐答案

我已经接受了 Safecase 的答案,但我想在这里发布我的最终解决方案:

I have accepted the answer from Safecase, but I would like to publish my final solution here:

1) 为了呈现一个具有从右到左过渡的模态视图控制器,我编写了以下方法:

1) To present a modal view controller with a from right to left transition I have written following method:

-(void) presentModalView:(UIViewController *)controller {
    CATransition *transition = [CATransition animation];
    transition.duration = 0.35;
    transition.timingFunction =
    [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionMoveIn;
    transition.subtype = kCATransitionFromRight;

    // NSLog(@"%s: self.view.window=%@", _func_, self.view.window);
    UIView *containerView = self.view.window;
    [containerView.layer addAnimation:transition forKey:nil];
    [self presentModalViewController:controller animated:NO];
}

2) 关闭带有从左到右滑动过渡的模态视图:

2) To dismiss a modal view with an slide transition left to right:

-(void) dismissMe {
    CATransition *transition = [CATransition animation];
    transition.duration = 0.35;
    transition.timingFunction =
    [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionMoveIn;
    transition.subtype = kCATransitionFromLeft;

    // NSLog(@"%s: controller.view.window=%@", _func_, controller.view.window);
    UIView *containerView = self.view.window;
    [containerView.layer addAnimation:transition forKey:nil];

    [self dismissModalViewControllerAnimated:NO];
}

谢谢各位!

这篇关于带过渡的dismissModalViewController:从左到右的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆