IOS培训
美国上市IOS培训机构

400-111-8989

热门课程

iOS培训讲解知识:自定义转场动画

  • 时间:2015-07-13
  • 发布:达内
  • 来源:达内

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开发中如何设置产品属性

教你如何实现界面数据重新加载

iOS培训教程之OC基础详解

达内iOS主要学习课程有哪些?

Objective-C的集成开发环境搭建方法

选择城市和中心
贵州省

广西省

海南省

台湾