核心动画CoreAnimation
2016-04-08 00:00
162 查看
摘要: 核心动画CoreAnimation
核心动画CoreAnimation
基本动画:CABasicAnimation
帧动画:CAKeyframeAnimation
组动画:CAAnimationGroup
CoreAnimation时直接作用在CALayer上的,并非UIView。
CABasicAnimation:平移,旋转,缩放
CAKeyframeAnimation:按路径移动
若想将关键帧动画中的路径绘制出来,创建一个继承自UIView的子类,与self.view关联,在子类UIView中的drawRect方法中绘制。
一、基本动画的创建步骤:
创建基本动画对象,设置动画的属性(value,duration),将动画添加到要作用layer。
动画完成后默认会回到初始位置,此时若想layer定在动画完成时的位置,需要设置动画完成后不删除且修改fillMode为kCAFillModeForwards。
注意:
如果fillMode=kCAFillModeForwards和removedOnCompletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态。但在实质上,图层的属性值还是动画执行前的初始值,并没有真正被改变。比如,CALayer的position初始值为(0,0),CABasicAnimation的fromValue为(10,10),toValue为(100,100),虽然动画执行完毕后图层保持在(100,100)这个位置,实质上图层的position还是为(0,0).
BasicAnimation:
fromValue:
toValue:
byValue:
指定keyPath的字符串内容@“transform.translation”、@“transform.scale”、@“transform.rotation”与value属性可以通过识别value值的类型,比如CGPoint、NSNumber、弧度来自动做出平移、缩放和旋转的动画。
二、帧动画的创建步骤:
创建帧动画对象,设置帧动画values和duration、repeatCount等属性,添加帧动画到layer上。
CALayer的属性:
1.若想得到带圆环的图片
可以设置图片所在layer的边框(border的width、color、cornerRadius),设置边框圆角并进行裁剪(maskToBounds)便可以得到带圆环的图片。
2.设置背景投影阴影
设置阴影颜色、偏移量、透明度。阴影模糊度shadowRadius。
3.若需要设置layer四周阴影,绘制阴影路径
阴影默认在右下角,左上无阴影,若想四边阴影宽度相同,设置x,y各自为多余宽度的一半。
禁用隐式动画步骤:
开启一个显式CATransaction事务
修改事务属性
提交事务
CADisplayLink 与 NSTimer 有什么不同?
iOS设备的屏幕刷新频率是固定的,CADisplayLink在正常情况下会在每次刷新结束都被调用,精确度相当高。
NSTimer的精确度就显得低了点,比如NSTimer的触发时间到的时候,runloop如果在阻塞状态,触发时间就会推迟到下一个runloop周期。并且 NSTimer新增了tolerance属性,让用户可以设置可以容忍的触发的时间的延迟范围。
CADisplayLink使用场合相对专一,适合做UI的不停重绘,比如自定义动画引擎或者视频播放的渲染。
NSTimer的使用范围要广泛的多,各种需要单次或者循环定时处理的任务都可以使用。
从系统获取时间步骤:::
//获取当前日历
NSCalendar *currentCal = [NSCalendar currentCalendar];
//获取当前系统时间
NSDate *currentDate = [NSDate date];
//从当前时间中获取秒数
NSDateComponents * components = [currentCal components:NSCalendarUnitMinute fromDate:currentDate];
NSInteger minute = components.minute;
核心动画CoreAnimation
基本动画:CABasicAnimation
帧动画:CAKeyframeAnimation
组动画:CAAnimationGroup
CoreAnimation时直接作用在CALayer上的,并非UIView。
CABasicAnimation:平移,旋转,缩放
CAKeyframeAnimation:按路径移动
若想将关键帧动画中的路径绘制出来,创建一个继承自UIView的子类,与self.view关联,在子类UIView中的drawRect方法中绘制。
一、基本动画的创建步骤:
创建基本动画对象,设置动画的属性(value,duration),将动画添加到要作用layer。
动画完成后默认会回到初始位置,此时若想layer定在动画完成时的位置,需要设置动画完成后不删除且修改fillMode为kCAFillModeForwards。
注意:
如果fillMode=kCAFillModeForwards和removedOnCompletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态。但在实质上,图层的属性值还是动画执行前的初始值,并没有真正被改变。比如,CALayer的position初始值为(0,0),CABasicAnimation的fromValue为(10,10),toValue为(100,100),虽然动画执行完毕后图层保持在(100,100)这个位置,实质上图层的position还是为(0,0).
BasicAnimation:
fromValue:
toValue:
byValue:
指定keyPath的字符串内容@“transform.translation”、@“transform.scale”、@“transform.rotation”与value属性可以通过识别value值的类型,比如CGPoint、NSNumber、弧度来自动做出平移、缩放和旋转的动画。
二、帧动画的创建步骤:
创建帧动画对象,设置帧动画values和duration、repeatCount等属性,添加帧动画到layer上。
CALayer的属性:
1.若想得到带圆环的图片
可以设置图片所在layer的边框(border的width、color、cornerRadius),设置边框圆角并进行裁剪(maskToBounds)便可以得到带圆环的图片。
2.设置背景投影阴影
设置阴影颜色、偏移量、透明度。阴影模糊度shadowRadius。
3.若需要设置layer四周阴影,绘制阴影路径
阴影默认在右下角,左上无阴影,若想四边阴影宽度相同,设置x,y各自为多余宽度的一半。
禁用隐式动画步骤:
开启一个显式CATransaction事务
修改事务属性
提交事务
CADisplayLink 与 NSTimer 有什么不同?
iOS设备的屏幕刷新频率是固定的,CADisplayLink在正常情况下会在每次刷新结束都被调用,精确度相当高。
NSTimer的精确度就显得低了点,比如NSTimer的触发时间到的时候,runloop如果在阻塞状态,触发时间就会推迟到下一个runloop周期。并且 NSTimer新增了tolerance属性,让用户可以设置可以容忍的触发的时间的延迟范围。
CADisplayLink使用场合相对专一,适合做UI的不停重绘,比如自定义动画引擎或者视频播放的渲染。
NSTimer的使用范围要广泛的多,各种需要单次或者循环定时处理的任务都可以使用。
从系统获取时间步骤:::
//获取当前日历
NSCalendar *currentCal = [NSCalendar currentCalendar];
//获取当前系统时间
NSDate *currentDate = [NSDate date];
//从当前时间中获取秒数
NSDateComponents * components = [currentCal components:NSCalendarUnitMinute fromDate:currentDate];
NSInteger minute = components.minute;
相关文章推荐
- Gifski:一个跨平台的高质量 GIF 编码器
- 模仿动画的放大缩小容器
- jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
- Android实现定制返回按钮动画效果的方法
- Android中ViewFlipper的使用及设置动画效果实例详解
- jQuery实现美观的多级动画效果菜单代码
- php判断GIF图片是否为动画的方法
- jQuery实现动画效果circle实例
- HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
- 浅析JavaScript动画
- js排序动画模拟-插入排序
- javascript+HTML5的Canvas实现Lab单车动画效果
- 基于javascript实现漂亮的页面过渡动画效果附源码下载
- js实现按钮颜色渐变动画效果
- 超赞的jQuery图片滑块动画特效代码汇总
- jQuery实现连续动画效果实例分析
- 利用jquery制作滚动到指定位置触发动画
- jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
- jQuery实现带有洗牌效果的动画分页实例
- jQuery动画效果相关方法实例分析