CABasicAnimation

了解CABasicAnimation之前,先了解下Core Animation是什么?简单的说它是一套包含图形绘制,投影,动画的OC类集合,通过CoreAnimation提供的接口,我们可以方便完成自己所想要的动画。

图形分为的几个层次,越往上封装层度越高
Core Animation则是可以理解为通过 CALayerCAAnimation,AddAnimation三者组成动画的。
  • CALayer 该事件是谁做;
  • CAAnimation 该事件怎么做;
  • AddAnimation 将谁做和做怎么做结合起来。
CALayer

CALayer Classes是core animation的基础,CALayer与UIView很类似的概念,我们可以将UIView看做一种特殊的CALayer,只不过UIView可以响应事件而已。一般来说,layer可以有两种用途,二者不互相冲突:一是对view相关属性的设置,包括圆角、阴影、边框等参数,二是实现对view的动画操控。因此对一个view进行core animation动画,本质上是对该view的.layer进行动画操纵。

CAAnimation

1.CABasicAnimation
通过设定起始点,终点,时间,动画会沿着你这设定点进行移动。
2.CAKeyframeAnimation
Keyframe顾名思义就是关键点的frame,你可以通过设定CALayer的始点、中间关键点、终点的frame,时间,动画会沿你设定的轨迹进行移动
3.CAAnimationGroup
Group也就是组合的意思,就是把对这个Layer的所有动画都组合起来。
4.CATransition
这个就是苹果帮开发者封装好的一些动画。

小试牛刀

首先的初始化CALayer,在初始化之前我们需要导入#import <QuartzCore/QuartzCore.h>

// CALayer 执行者
CALayer *myLayer = [[CALayer alloc] init];
myLayer.backgroundColor = [UIColor greenColor].CGColor;
myLayer.frame = CGRectMake(60, 20 + 100, 50, 50);
myLayer.cornerRadius = 5;
[self.view.layer addSublayer:myLayer];

// CAAnimation 怎么做
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];// 注意  animationWithKeyPath后跟随的是CALayer可接受的Key即可 既使用动画的对象的Key
animation.fromValue = [NSValue valueWithCGPoint:myLayer.position]; // 起始值
CGPoint toPoint = myLayer.position;
toPoint.x += 200;
animation.toValue = [NSValue valueWithCGPoint:toPoint]; // 改变到最大的值
 //当你设定这个属性为 YES 时,在它到达目的地之后,动画的返回到开始的值,代替了直接跳转到 开始的值
animation.autoreverses = YES;
//当动画结束后,layer会一直保持着动画最后的状态
animation.fillMode = kCAFillModeForwards;
// 重复的次数
animation.repeatCount = MAXFLOAT;
// 完成这个过程的总时间
animation.duration = 2.0;

//ADDAnimation 将上面两者结合
[myLayer addAnimation:animation forKey:@"TheKeyWithDiffrenceOfAnimation"];
// 此处的key 可以理解为一个标志而已
moveGIF.gif
常用的keyPath :
  • opacity;
  • position;
  • transform
  • transform.scale;
  • transform.scale.x;
  • transform.scale.y;
  • transform.rotation.z;
  • margin;
  • zPosition;
  • backgroundColor;
  • cornerRadius;
  • bounds;
  • contents;
  • contentsRect;
  • frame;
  • hidden;
  • mask;
  • masksToBounds;
  • shadowColor;
  • shadowOffset;
  • shadowOpacity;
  • shadowRadius;

大部分的keyPath,可以直接在CALayer 中的属性找到,但是下一步的keyPath 如 transform.scale 就得通过 Core Animation Programming Guide 中去寻找。

transform.keyPath

下面key分别是transform.scale;position;transform.rotation.x;opacity.

AnimationGIF

另外也可以用CAAnimationGroup将一套动画组合起来咯。

CAAnimationGroup *groupAnnimation = [CAAnimationGroup animation];
groupAnnimation.duration = 5;
groupAnnimation.autoreverses = YES;
// moveAnimation, scaleAnimation, rotateAnimation 都是CABasicAnimation咯
groupAnnimation.animations = @[moveAnimation, scaleAnimation, rotateAnimation];
groupAnnimation.repeatCount = MAXFLOAT;
//开演
[myLayer addAnimation:groupAnnimation forKey:@"group"];
参考

http://blog.csdn.net/lvxiangan/article/details/17167827
https://developer.apple.com/library/prerelease/ios/documentation/GraphicsImaging/Reference/CAAnimation_class/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,176评论 5 469
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,190评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,232评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,953评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,879评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,177评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,626评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,295评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,436评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,365评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,414评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,096评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,685评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,771评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,987评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,438评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,032评论 2 341

推荐阅读更多精彩内容

  • 在iOS实际开发中常用的动画无非是以下四种:UIView动画,核心动画,帧动画,自定义转场动画。 1.UIView...
    请叫我周小帅阅读 3,070评论 1 23
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,441评论 6 30
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,083评论 5 13
  • Core Animation Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,...
    45b645c5912e阅读 2,998评论 0 21
  • 转载:http://www.cnblogs.com/jingdizhiwa/p/5601240.html 1.ge...
    F麦子阅读 1,528评论 0 1