属性解析:keyPath:经过指定CALayer的一个属性名称为keyPath(NSString类型),而且对CALayer的这个属性的值进行修改,达到相应的动画效果。好比,指定@”position”为keyPath,就修改CALayer的position属性的值,以达到平移的动画效果面试
CABasicAnimation,CAPropertyAnimation的子类数组
随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue。若是fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态。但在实质上,图层的属性值仍是动画执行前的初始值,并无真正被改变。好比,CALayer的position初始值为(0,0),CABasicAnimation的fromValue为(10,10),toValue为(100,100),虽然动画执行完毕后图层保持在(100,100)这个位置,实质上图层的position仍是为(0,0)数据结构
CAKeyframeAnimation,CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation只能从一个数值(fromValue)变到另外一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值并发
CABasicAnimation可看作是最多只有2个关键帧的CAKeyframeAnimation框架
CAAnimationGroup,CAAnimation的子类,能够保存一组动画对象,将CAAnimationGroup对象加入层后,组中全部动画对象能够同时并发运行函数
animations:用来保存一组动画对象的NSArray
默认状况下,一组动画对象是同时运行的,也能够经过设置动画对象的beginTime属性来更改动画的开始时间字体
CATransition,CAAnimation的子类,用于作转场动画,可以为层提供移出屏幕和移入屏幕的动画效果。iOS比Mac OS X的转场动画效果少一点动画
endProgress:动画终点(在总体动画的百分比)ui
UIView动画spa
UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持
执行动画所须要的工做由UIView类自动完成,但仍要在但愿执行动画时通知视图,为此须要将改变属性的代码放在[UIView beginAnimations:nil context:nil]和[UIView commitAnimations]之间
Block动画
帧动画
Core Graphics是基于C的API,能够用于一切绘图操做
Core Graphics 和Quartz 2D的区别
Core Graphics是高度集成于UIView和其余UIKit部分的。
Core Graphics数据结构和函数能够经过前缀CG来识别。
系统拥有坐标系,如320 480 硬件有retain屏幕和非retain屏:如320 480、640 960
Core Graphics 使用的是系统的坐标系来绘制图片。在分辨率为640 960手机上绘制图片时,实际上Core Graphics 的坐标是320*480。这个时候每一个坐标系上的点,实际上拥有两个像素。
视图能够经过子视图、图层或实现drawRect:方法来表现内容,若是说实现了drawRect:方法,那么最好就不要混用其余方法了,如图层和子视图。自定义绘图大部分是由UIKit或者Core Graphics来实现的。
Core Graphics的优势:快速、高效,减少应用的文件大小。同时能够自由地使用动态的、高质量的图形图像。 使用Core Graphics,能够建立直线、路径、渐变、文字与图像等内容,并能够作变形处理
2D绘图通常能够拆分红如下几个操做: 线条 , 路径 , 文本 , 图片 , 渐变
因为像素是依赖于目标的,因此2D绘图并不能操做单独的像素,咱们能够从上下文(Context)读取它。
绘图就比如在画布上拿着画笔机械的进行画画,经过制定不一样的参数来进行不一样的绘制。
http://www.tuicool.com/articles/jIJzMf
http://blog.csdn.net/mangosnow/article/details/37054765
CoreAnimation也就是核心动画, 是一组很是强大的动画处理API, 可使用少许的代码作出绚丽的效果, 是直接做用在CALayer上的, 并不是UIView, 而且Core Animation的动画执行过程都是在后台操做, 不会阻塞主线程.
全部动画都是做用在CALayer上的, 当把动画添加到Layer上, 是不直接修改它的属性, Core Animation维护了两个平行layer的层次结构, 模型层树能够看到Layer的状态, 表示层树则是动画正在表现的值的近似。
Core Animation的使用步骤:
使用它须要先添加QuartzCore.framework框架和引入主头文件<QuartzCore/QuartzCore.h>(iOS7.0+ 不须要)
初始化一个CAAnimation对象,并设置一些动画相关属性
经过调用CALayer的addAnimation:forKey:方法增长CAAnimation对象到CALayer中,这样就能开始执行动画了
经过调用CALayer的removeAnimationForKey:方法能够中止CALayer中的动画
以转场动画为例:
建立CATransition对象
CATransition *animation = [CATransition animation];
设置运动时间(即动画时间)
animation.duration = DURATION;
设置运动type(类型)
animation.type = type;
if (subtype != nil) { //设置子类 (和type配合使用, 指定运动的方向)
animation.subtype = subtype;}
设置运动速度(动画的运动轨迹,用于变化起点和终点之间的插值计算,形象点说它决定了动画运行的节奏,好比是均匀变化(相同时间变化量相同)仍是先快后慢,先慢后快仍是先慢再快再慢)
animation.timingFunction = UIViewAnimationOptionCurveEaseInOut;
将动画添加到view的Layer层
[view.layer addAnimation:animation forKey:@"animation"];
不是很清楚题目的真正要求,是想知道核心动画的哪些知识点。如何开始和结束动画,这核心动画有不少种,每种动画还有很大的区别。
参考答案:
动画的开始和结束均可以经过CAMediaTiming协议来处理,核心动画的基类是遵照了CAMediaTiming协议的,能够指定动画开始时间、动画时长、动画播放速度、动画在完成时的行为(停留在结束处、动画回到开始处、动画完成时移除动画)。
动画有两种基本类型:一种为UIView动画,又称隐式动画,动画后frame的数值发生了变化.另外一种是CALayer动画,又称显示动画,动画后模型层的数据不会发生变化,图形回到原来的位置。
UITableViewStylePlain:普通样式
UITableViewCellStyleDefault:Default样式:左边一个显示图片的imageView,一个标题textLabel,没有detailTextLabel。
UITableViewCellStyleSubtitle:Subtitle样式:左边一个显示图片的imageView,上边一个主标题textLabel,一个副标题detailTextLabel。主标题字体大且加黑,副标题字体小在主标题下边。
UITableViewCellStyleValue1:Value1样式:左边一个显示图片的imageView,左边一个主标题textLabel,右边一个副标题detailTextLabel,主标题字体比较黑。
UITableViewCellStyleValue2:Value2样式:左边一个主标题textLabel字体偏小,挨着右边一个副标题detailTextLabel,字体大且加黑。
上下文:主要用于描述图形写入哪里;
路径:是在图层上绘制的内容;
状态:用于保存配置变换的值、填充和轮廓, alpha 值等。文章若有问题,请留言,我将及时更正。