首先介绍一下CATransition和CAMediaTimingFunction两个类:
CATransition
CATransition是CAAnimation的子类,主要用到了type属性
type是用于设置动画的过度方式,主要包括以下4个类型:
kCATransitionFade 淡入淡出的效果
kCATransitionMoveIn 移动效果
kCATransitionPush 推送效果
kCATransitionReveal 揭开的效果,将旧视图移开,显示新的视图。
CAMediaTimingFunction
他主要的作用是动画缓冲的作用
这里有一些方式来创建kCAMediaTimingFunctionLinear,最简单的方式是调用+timingFunctionWithName:的构造方法。这里传入如下几个常量之一:
kCAMediaTimingFunctionLinear 立即加速并且保持匀速到达终点
kCAMediaTimingFunctionEaseIn 慢慢加速然后突然停止的方法
kCAMediaTimingFunctionEaseOut 全速开始,然后慢慢减速停止
kCAMediaTimingFunctionEaseInEaseOut 慢慢加速然后再慢慢减速
kCAMediaTimingFunctionDefault 和kCAMediaTimingFunctionEaseInEaseOut很类似,但是加速和减速的过程都稍微有些慢,它和kCAMediaTimingFunctionEaseInEaseOut的区别很难察觉, 可能是苹果觉得它对于隐式动画来说更适合(然后对UIKit就改变了想法,而是使用kCAMediaTimingFunctionEaseInEaseOut作为默认效果),虽然它的名字说 是默认的,但还是要记住当创建显式的CAAnimation它并不是默认选项(换句话说,默认的图层行为动画用kCAMediaTimingFunctionDefault作为它们的计时方法)
示例代码:
CATransition *transition = [CATransition animation];
transition.type = kCATransitionFade;
transition.duration=0.8f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[image.layer addAnimation:transitionforKey:nil];
网友评论