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动画可以改变真实值
如果一个动画不需要与用户交互通常用核心动画,转场动画都是用核心动画
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动画可以改变真实值
如果一个动画不需要与用户交互通常用核心动画,转场动画都是用核心动画
相关文章推荐
- 核心动画Core Animation系列之概述和CABasicAnimation
- iOS核心动画Core Animation(二)
- iOS开发 - Core Animation 核心动画
- Core Animation - 核心动画
- iOS开发 - Core Animation 核心动画
- Core Animation (核心动画) 基础应用
- iOS动画-核心动画(Core Animation)
- 核心动画Core Animation
- 核心动画——Core Animation
- Core Animation核心动画(1)
- 核心动画——Core Animation
- IOS核心动画 Core Animation - 基本动画
- iOS - Core Animation(核心动画)
- iOS开发中的核心动画-Core Animation-
- 核心动画Core Animation
- iOS——Core Animation(核心动画)
- iOS-Core Animation 核心动画
- iOS Core Animation 核心动画
- 核心动画 Core Animation
- 011-iOS核心动画(Core Animation)