您的位置:首页 > 移动开发 > IOS开发

ios--Quartzcore核心动画框架的学习

2017-04-17 20:35 423 查看
核心动画框架Quartzcore

首先不得不先提到CALayer与UIView两者之间的区别

一.CALayer和UIView类是完全不用的两个类,CALayer是UIView上的图层,有很多个CALayer组成一个UIView

二.UIView动画和核心动画的区别

1.核心动画只作用在layer

2.核心动画修改的值都是假象,他的真实位置并没有发生改变

3.当需要与用户进行交互时(User Interaction Enabled)用UIView,不需要时两个都可以用

三.Quartzcore主要用到的 CAAnimation类

CAAnimationGroup;//动画组

CAPropertyAnimation

CABasicAnimation;//基本动画

CAKeyframeAnimation;//帧动画

CATransition;//转场动画

四.各个 CAAnimation中的属性值



1. CABasicAnimation

keyforpath

fromValues toValues

values

或者使用kvc

[anim setValue:<> forKey:<>];

//创建一个帧动画
CAKeyframeAnimation *anim = [CAKeyframeAnimation animation];
[anim setValue:@[@(angle2Rad(-5)),@(angle2Rad(5)),@(angle2Rad(-5))]forKey:@"transform.rotation"];
//    //设置属性
//    anim.keyPath = @"transform.rotation";
//
//    //设置属性值.
//    anim.values = @[@(angle2Rad(-5)),@(angle2Rad(5)),@(angle2Rad(-5))];
//设置执行的次数
anim.repeatCount = MAXFLOAT;

anim.duration = 0.25;

//添加动画
[self.iconV.layer addAnimation:anim forKey:nil];


2.CATransition

type

subType

//创建动画
CATransition *anim = [CATransition animation];

//设置转场类型
//anim.type = @"pageCurl";
anim.type = @"fade";
//设置转场的方向
anim.subtype = kCATransitionFromTop;
//设置动画的开始点.
anim.startProgress = 0.2;
//设置动画的结束点.
anim.endProgress = 0.8;

anim.duration = 1;
[self.imageV.layer addAnimation:anim forKey:nil];


五.其他

CADisplayLink

一旦CADisplayLink 以特定的模式注册到runloop之后,每当屏幕需要刷新的时候,runloop就回调用CADisplayLink 绑定的target的selector,这时target可以读到CADisplayLink 的每次跳用过的时间戳,用来准备下一帧显示需要的数据

-(CADisplayLink *)link{

if (_link == nil) {

CADisplayLink *link  = [CADisplayLink displayLinkWithTarget:self selector:@selector(update)];
[link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
_link = link;

}
return _link;

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