美文网首页iOS开发专题
导航控制器的自定义转场动画-iOS

导航控制器的自定义转场动画-iOS

作者: BohrIsLay | 来源:发表于2017-02-07 19:38 被阅读93次

    这篇文章与我前面写的一篇文章"普通控制器的自定义转场动画的实现步骤-iOS"都是关于控制器的自定义转场动画的,前面一篇介绍了普通控制器的自定义转场动画的实现,这一篇则介绍导航控制器的自定义转场动画的实现。

    在Object-C中,控制器的转场有两类,一类是导航控制器的push和pop,一类是普通控制器的present和dismiss,这里只讲导航控制器的转场动画,普通控制器的转场动画前面已经讲过。

    当我们调用[self.navigationController pushViewController:vc animated:YES]或者[self.navigationController popViewControllerAnimated:YES]时,即可实现系统自带的导航控制器的push和pop转场动画,但是有时候你可能想要别的效果,这个时候就需要我们自定义控制器的转场动画了

    当你了解后,你会发现,导航控制器的自定义转场动画,实现起来其实也很简单。以下的gif图里就是我实现的导航控制器的自定义转场动画,这也是调用[self.navigationController pushViewController:vc animated:YES]或者[self.navigationController popViewControllerAnimated:YES]实现的效果哦,跟系统的push,pop的效果明显不一样吧

    NavigationControllerAnimatingTransition.gif
    如果想直接看代码,到github下载demo,实现步骤如下:

    1.push前的控制器遵守导航控制器协议UINavigationControllerDelegate

    1.遵守协议.png

    2..push前的控制器成为导航控制器的代理self.navigationController.delegate = self

    2.成为代理.png

    3.push前的控制器实现代理方法

    -(id <UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController 
                                      animationControllerForOperation:(UINavigationControllerOperation)operation
                                                    fromViewController:(UIViewController *)fromVC
                                                      toViewController:(UIViewController *)toVC
    
    
    3.实现代理方法.png

    需要注意的是,代理方法返回的是一个遵守UIViewControllerAnimatedTransitioning协议的对象,这个对象负责转场的动画控制,而这个协议里面又有两个方法需要实现

    1.动画的时间:- (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext
    2.动画的具体实现:- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext

    不同的动画实现即控制着不同的效果,我这里push动画是透明度和视图的transform变化

    透明度和transform属性变化的push.png

    这样,导航控制器的push动画即实现完成。当push前的控制器调用[self.navigationController pushViewController:vc animated:YES]时,就会有push动画。当然现在还没有实现pop动画,pop动画是在push后的控制器里实现,实现步骤和push动画类似,也是上面几个步骤,具体可看代码。

    聪明的你,了解实现步骤后是不是也很容易就可以做自己定制的push和pop动画了呢?

    相关文章

      网友评论

        本文标题:导航控制器的自定义转场动画-iOS

        本文链接:https://www.haomeiwen.com/subject/whymittx.html