您的位置:首页 > 其它

86-Core Animation 核心动画

2015-01-25 21:44 267 查看
Core Animation 核心动画

1.简介

Core Animation是一组非常强大的动画处理API,使用它用少量的代码就可以实现非常强大的功能和炫丽的动画效果。

Core Animation跨平台可以用在Mac OS X和iOS平台。

Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程。

注意:Core Animation是直接作用在CALayer上的,并非UIView

2.核心动画属性

duration:动画的持续时间

anim.repeatDuration=2;

repeatCount:重复次数,无限循环可以设置HUGE_VALF或者MAXFLOAT

//MAXFLOAT是最大的执行次数

anim.repeatCount=MAXFLOAT;

repeatDuration:重复时间

anim.repeatDuration=2;

取消动画反弹

1>在动画执行完毕的时候不要移除动画

anim.removedOnCompletion=NO;

2>保持最新的模式

anim.fillMode=kCAFillModeForwards;

动画延迟执行时间(延迟2s)

//CACurrentMediaTime()图层当前时间

anim.beginTime=CACurrentMediaTime()+2;

动画自动反转

//执行完动画后回到未动画的时候

anim.autoreverses=YES;

fillMode:当前对象在没有活动时间段的行为。

fillMode属性值

kCAFillModeRemoved 动画开始前和动画结束后,动画对layer都没有影响,动画结束后,layer会恢复到之前的状态(默认)

kCAFillModeForwards 动画结束后,layer会保持动画最后的状态

kCAFillModeBackwards 动画开始前,只需要将动画加入了一个layer,layer便立即进入动画的初始状态并等待动画开始。

kCAFillModeBoth 动画加入后开始之前,layer便处于动画初始状态,动画结束后layer保持动画最后的状态

timingFunction:速度控制函数,控制动画运行的节奏

kCAMediaTimingFunctionLinear(线性):匀速,相对静态的感觉

kCAMediaTimingFunctionEaseIn(渐进):动画缓慢进入,然后加速离开

kCAMediaTimingFunctionEaseOut(渐出):动画全速进入,然后减速到达目的地

kCAMediaTimingFunctionEaseInEaseOut(渐进渐出):动画缓慢的进入,中间加速,然后减速的到达目的地。(默认)。

delegate:动画代理

注意:

1>非正式协议也可以叫分类(功能都是扩充方法)

2>设置动画遵守的协议非正式协议(分类),系统已经设置好,不用手动设置

常用动画代理方法:在动画执行完成的时候调用

- (void)animationDidStop:(CAAnimation *)anim
finished:(BOOL)flag

{

}

3.核心动画的类

注意:核心动画中所有类都遵守CAMediaTiming协议,并且所有类都不具有功能,实现它的子类才有动画效果。

1>CABasicAnimation基本动画,是CAPropertyAnimation的子类,做一些简单效果

//keyPath 更改哪个属性

anim.keyPath=@"transform.scale";

//toValuet 做什么样的改变

anim.toValue=@0.5;

[_layer addAnimation:anim forKey:nil];

2>CAAnimationGroup(动画组)CAAnimation的子类,一组动画可以同时进行缩放,旋转等。

//同时做很多种动画(动画组)

CAAnimationGroup *grooup=[CAAnimationGroup animation];

//添加动画组(a1,a2,a3,表示的是平移,缩放和旋转三种动画)

animations 数组,保存一组要执行的动画

grooup.animations=@[a1,a2,a3];

3>CAKeyframeAnimation帧动画,做一些连续的流畅的动画

是CAPropertyAnimation的子类,与CABasicAnimation的区别是:

CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值

4>转场动画——CATransition:CAAnimation的子类,能够为层提供移出屏幕和移入屏幕的动画效果

过渡代码:需要执行转场动画的代码

NSString *imageName=[NSString stringWithFormat:@"%d",i];

UIImage *img=[UIImage imageNamed:imageName];

_imageView.image=img;

添加转场动画

CATransition *anim=[CATransition animation];

注意:过渡代码一定要和转场代码放在一起,不然没有意义

//转场动画过渡效果

//翻页

anim.type=@"pageCurl";

//设置动画进度(从哪里开始翻:下为中间)

anim.startProgress=0.5;

anim.duration=1;

[_imageView.layer addAnimation:anim forKey:nil];

转场动画过渡效果取值



4.核心动画和UIView动画的区别
核心动画一切都是假象,并不能真实改变属性的值,UIView动画可以改变真实值
如果一个动画不需要与用户交互通常用核心动画,转场动画都是用核心动画

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: