您的位置:首页 > 其它

核心动画的总结

2017-05-09 14:34 183 查看
1.core annimation的使用步骤
  (1)使用它需要先添加QuarzCore。framework框架和引入头文件<QuartzCore/QuartzCore.h>(ios7不需要)
  (2)初始化一个CAAnimation对象,并设置一些动画相关属性
  (3)通过调用CALayer的addAnimation:forkey:方法增加CAAnimation对象到CALayer中,这样就能执行动画了
  (4)通过调用CALayer的removeAnimationForKey:方法可以停止CALayer中的动画
2.CAAnimation是所有动画类的父类,应该使用它的子类。常见的属性有:
duration:动画的时间
repeatCount:动画的重复次数
timingFunction:控制动画运行的节奏
说明:
(1)能用的动画类只有4个子类:CABasicAnimation,CAKeyframeAnimation,CATransition,CAAnimationGroup
(2)CAmediaTiming是一个协议(protocol)
CAPopertyAnimation是CAAnimation的子类,但是不能直接使用,要想创建对象,应该使用它的两个子类:CABasicAnimation和CAKeyAnimation
它有个NSString类型的keypath属性,你可以指定CALayer的某个属性名为keypath,并且对CALayer的这个属性的值进行修改,达到相应的动画效果。比如,指定@“position”为keypath,就会修改CALayer的position属性的值,已达到平移的效果
3.补充说明
所有动画对象的父类,负责控制动画的持续时间和速度,是个抽象类,不能直接使用,应该使用它的具体的子类
属性解析:(红色表示来自CAMediaTiming协议的属性)
duration:动画的持续时间
repeatCount:动画的重复次数
repeatDuration:动画的重复时间
removedOnCompletion:默认为YES,代表动画执行完毕后就从图层上移除,图形会恢复到动画执行前的状态。如果想让图层保持显示动画执行后状态,那就设置为NO,不过还要设置fillMode为KCAFillModeForwards
fillMode:决定当前对象在非active时间段的行为。比如动画开始之前,动画结束之后 (填充方式)
//向前
CA_EXTERN
NSString *
const kCAFillModeForwards

    CA_AVAILABLE_STARTING (10.5,
2.0,
9.0,
2.0);
//向后
CA_EXTERN
NSString *
const kCAFillModeBackwards

    CA_AVAILABLE_STARTING (10.5,
2.0,
9.0,
2.0);
//先向前再向后
CA_EXTERN
NSString *
const kCAFillModeBoth

    CA_AVAILABLE_STARTING (10.5,
2.0,
9.0,
2.0);
//向前
CA_EXTERN
NSString *
const kCAFillModeRemoved

    CA_AVAILABLE_STARTING (10.5,
2.0,
9.0,
2.0);

beginTime:可以用来设置动画延迟执行时间,若想延迟2s,就设置为CACurrentMediaTime()+2,CACurrentMediaTime()为图层的当前时间
timingFuction:速度控制函数,控制动画运行的节奏   
//缓冲函数
pulldownAnimation.timingFunction = [CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionLinear];

//立即加速后到保持匀速到停止
CA_EXTERN
NSString *
const kCAMediaTimingFunctionLinear

    CA_AVAILABLE_STARTING (10.5,
2.0,
9.0,
2.0);
//慢慢加速到突然停止
CA_EXTERN
NSString *
const kCAMediaTimingFunctionEaseIn

    CA_AVAILABLE_STARTING (10.5,
2.0,
9.0,
2.0);
//全速开始到慢慢减速停止
CA_EXTERN
NSString *
const kCAMediaTimingFunctionEaseOut

    CA_AVAILABLE_STARTING (10.5,
2.0,
9.0,
2.0);
//慢慢加速到慢慢减速的过程
CA_EXTERN
NSString *
const kCAMediaTimingFunctionEaseInEaseOut

    CA_AVAILABLE_STARTING (10.5,
2.0,
9.0,
2.0);
//默认样式与 KCAMediaTimingFunctionEaseOut 相同
CA_EXTERN
NSString *
const kCAMediaTimingFunctionDefault

delegate:动画代理

4.基础动画
keypath的属性值:
        1.position(平移) 2.bounds(缩放) 3.transform(旋转)

5.关键帧动画(记录它的多个状态,以此来达到动画的效果)
CAKeyframeAnimation是CApropertyAnimation的子类,跟CABasicAnimation的区别:CABasicAnimation只能从一个数值(fromValue)变到另外一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值
属性解析:
values:就是上述的NSArray对象。里面的元素称为“关键帧”(keyframe)。动画对象会在指定的时间(duration)内,依次显示values数组中的每一个关键帧
path:可以设置一个CGPathRef/CGMutablePathRef。让层跟着路径移动。path只对CALayer的anchor和position起作用。如果你设置了path,那么values将被忽略。
keyTimes:可以为对应关键帧指定对应的时间点,起取值范围为0到1,keyTimes中的每一个时间值都对应values中的每一帧。当keyTimes没有设置的时候,各个关键帧的时间是平分的
说明:CABasicAnimation可看做是最多只有2个关键帧的CAkeyframeAnimation

6.转场动画
CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。ios比mac OS X的转场效果少一点
UINavigationController 就是通过CATranstion实现了将控制器的视图推入屏幕的动画效果
属性解析:
type:动画过渡类型
注释:

 fade     // 交叉淡化过渡(不支持过渡方向)

 push     // 新视图把旧视图推出去     

moveIn  // 新视图移到旧视图上面     

reveal   // 将旧视图移开,显示下面的新视图     

cube     // 立方体翻滚效果     

oglFlip    // 上下左右翻转效果     

suckEffect   // 收缩效果,如一块布被抽走(不支持过渡方向)     

rippleEffect // 滴水效果(不支持过渡方向)     

pageCurl     // 向上翻页效果     

pageUnCurl   // 向下翻页效果     

cameraIrisHollowOpen   // 相机镜头打开效果(不支持过渡方向)     

cameraIrisHollowClose  // 相机镜头关上效果(不支持过渡方向)

subtype:动画过渡方向
startProgress:动画起点
endProgress:动画终点

7.组合动画
CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行
属性解析:
annimation:用来保存一组动画对象的NSarray
默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: