IOS培训

亿元级外企ios培训企业

  • 全国服务监督电话4008270010
ios培训 > IOS开发教程 > iOS培训讲解知识:自定义转场动画
  • iOS培训讲解知识:自定义转场动画

    发布:达内  来源:达内  时间: 2015年07月13日

  • 转场动画的自定义说难不难,说简单也不简单,对大多数app而言,几乎不会用到转场动画,只有一些对用户体验要求高,动画要求炫酷的才会用到自定义转场动画。...

  • iOS开发中,UIViewController、UINavgationController和UITabBarController是我们使用最多的控件之一。对后两者而言,他们属于管理类型控制器,他们一般管理了多个ViewController,而ViewController之间的切换也是由他们进行管理。就官方api而言,他提供给我们的默认切换动画已经不能满足我们的需求了,所以我们需要自定义转场动画。

    转场动画的自定义说难不难,说简单也不简单,对大多数app而言,几乎不会用到转场动画,只有一些对用户体验要求高,动画要求炫酷的才会用到自定义转场动画。

    下面我们以UITabBarController的转场动画为例,向大家简单介绍下如何自定义转场动画:

    在开始书写代码之前,我们要做点准备工作。自定义TabBarController的转场动画,我们需要遵守两个协议:

    1、UIViewControllerAnimatedTransitioning 协议,负责实际执行动画。

    2、UITabBarControllerDelegate协议,负责获取到遵循UIViewControllerAnimatedTransitioning代理的实例对象。我们遵循协议后,完成协议中的相应方法,并让TabBarController的实例对象的Delegate指向我们完成转场动画的实例对象即可。

    3、另外一定需要注意的是:既然是转场动画,一定会涉及到两个ViewController(fromViewController和toViewController),以及一个容器(containerView),还有动画执行的时间。

    这里我们简单理解为记叙文中的三要素:

    4、时间;

    5、地点(containerView);

    6、人物(from和to)。

    了解完基础知识后,我们来进行代码实现。同样,我会新建一个类来遵循并实现代理方法,完成转场动画的自定义,取名叫TabBarControllerAnimationManager。在.h中我们只需要循序代理即可。

    我们command到第一个代理里面去看下有哪些代理方法:

    这里我们有两个代理方法是required,也就是说我们具体执行转场动画需要完成这两个代理方法,大家注意到第一个方法,它实际上就是设置我们转场动画的持续时间,完成这个方法就等于我们已经具备了一个要数—时间。而第二个方法则是我们完成动画的具体操作,他传给了我们一个动画的上下文,通过transitionContext上下文,我们可以获取到地点(containerView)、和人物(from和to)。拿到了这三个要数后,我们就能轻松的完成转场动画的自定义了。我们再command到第二个代理里面去:

    这里我们注意到两个方法,他们都是返回一个遵循并实现了UIViewControllerAnimatedTransitioning代理的实例对象,这里我们只需要返回self即可(因为当前我们的TabBarControllerAnimationManager是实现了该代理方法的)。

    但是两个方法有所不同:

    第一个方法是返回可交互转场动画的实例对象,如果要自定义可交互转场动画,那么我们需要遵循并实现另一个转场动画代理对象UIViewControllerInteractiveTransitioning,在这里我们实现第二个方法,自定义一个非可交互转场动画的自定义,通过这个原理,大家可以举一反三,实现可交互的转场动画。

    而在.m中我们至少需要实现三个方法,具体如下:

    正如之前所说的一样,第一个代理方法返回自己(当前自己实现了UIViewControllerAnimatedTransitioning协议)。

    需要注意的是:

    在动画结束之后,我们需要告诉动画执行的上下文,当前动画已完成,否则会一直在等待状态,而我们也无法进行操作。该代码为:[transitionContext completeTransition:![transitionContexttransitionWasCancelled]];(该方法一定不能少,并且一定要在动画结束后调用)。

    至此,我们制作了一个简单地平移动画,我们只需要将TabBarController的实例对象的Delegate指向当前类的实例对象即可完成。

    就当前发展而言,移动互联的快速发展,客户需求不断扩张,我们如果还一味的使用系统默认的东西,将可能无法满足客户要求。同时,今天的分享后,大家如果能将其运用到项目框架的建设中去,将会极大的简化项目的难度,加快开发节奏,节约时间。

  • 上一篇:iOS开发快速入门的方法

    下一篇:iOS开发中如何设置产品属性

网站导航
2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56