IOS-转场动画Quartz Core的Core Animation函数包
创建转场
你所要创建的转场是CATransition对象,这种对象属于Quartz Core的Core Animation函数包。一个动画中包含了多种属性,比如计时函数、动画类型以及持续时长等。要创建一个动画,需要调用这个类的animation方法。如下例所示:
- #import <QuartzCore/CAAnimation.h>
- CATransition *myTransition = [ CATransition animation ];
计时函数
计时函数决定了动画在从头到尾执行时的流畅程度。同一个动画可以用不同的速度来执行。例如,页面翻转动画可以开始的时候比较慢,然后在动画快结束时加速,也可以反过来。表3-4这些计时函数都可以用在你的动画当中。
表3-4
计 时 |
描 述 |
UIViewAnimationCurveEaseInOut |
在动画的开头和结尾比较慢 |
UIViewAnimationCurveEaseIn |
开始慢,然后加速 |
UIViewAnimationCurveEaseOut |
在动画的结尾慢下来 |
UIViewAnimationCurveLinear |
整个过程中速度不变 |
可以通过设置动画的timingFunction属性来指定计时函数:
- myTransition.timingFunction = UIViewAnimationCurveEaseInOut;
动画类型
动画类型定义了动画的绘制方式。每个动画都有一个类型和一个子类型。动画的类型定义了转场的整体行为,而子类型则定义细节,如转换的方向等。
苹果公司限制了开发者访问SDK中可用的动画,所以你无法在你自己的代码中加入在苹果公司的预置程序中见到的全部功能。SDK支持表3-5动画中的类型。
表3-5
动 画 类 型 |
描 述 |
kCATransitionFade |
从一个视图淡入淡出到下一个视图 |
kCATransitionMoveIn |
将新视图移入,覆盖旧视图 |
kCATransitionPush |
推出旧视图,引入新视图 |
kCATransitionReveal |
移出旧视图,露出新视图 |
SDK还支持表3-6中的动画子类型。
表3-6
动画子类型 |
描 述 |
kCATransitionFromRight |
新视图从右侧滑入 |
kCATransitionFromLeft |
新视图从左侧滑入 |
kCATransitionFromTop |
新视图从顶部滑入 |
kCATransitionFromBottom |
新视图从底部滑入 |
通过指定转场的type和subtype属性,可以设置类型和子类型:
- myTransition.type = kCATransitionPush;
- myTransition.subtype = kCATransitionFromLeft;
持续时长
默认情况下,动画被设置了一个标准持续时长,令其以通常的速度运行。对大多数动画来说,这个时长一般是0.3秒。如果你希望对动画提速或降速,可以通过调整转场的duration属性来手工设置持续时长:
- myTransition.duration = 0.3;