iOS应用中用到核心动画的场景还是蛮常见的,上次我聊过UIView动画的运用注意事项。这一次该聊聊核心动画了。哈哈
首先谈两者的区别,这两者最大的区别就是在于UIview动画是作用于view层的,而核心动画是作用于layer层,view层上的动画是真动画,因为frame发生实质性改变(位置是真的改变)。而核心动画是假动画,他的frame没发生实质性改变,改变的是layer层面上的动画效果。核心动画运用场景很多,因为它能实现位移效果、旋转效果、放大缩小效果等。。
那么如果在写的时候,能把每一步都写好呢?
那么现在我给大家聊聊写核心的动画一个主导思路吧。。
1.首先,我们要调用系统里面包含核心动画那块的库-就是“transform.translation”这个库
#import <QuartzCore/QuartzCore.h>
2.指定layer对应要实现的属性键值作为动画注册依据
例如:
CABasicAnimation*animation =
[CABasicAnimationanimationWithKeyPath:@"position"];
animation.delegate = self;//如果有需要实现动画代理方法,可以写
3.设置一些必要或需要的属性
例如:
animation.duration =2.5;// 动画持续时间
animation.repeatCount =1;// 不重复
animation.beginTime =CACurrentMediaTime() +2;// 2秒后执行
animation.autoreverses =YES;// 结束后执行逆动画
animation.fromValue = [NSValuevalueWithCGPoint:CGPointMake(0,0)];// 起始点
animation.toValue = [NSValuevalueWithCGPoint:CGPointMake(320,480)];// 终了点
4.将动画添加到layer层,并且自定义一个键值名来保存设置
例如:
[View.layer addAnimation:animation forKey:@"move-layer"];
5.可以在代理方法中写一些操作
- (void)animationDidStart:(CAAnimation *)theAnimation{
NSLog(@"动画启动");
}
- (void)animationDidStop:(CAAnimation*)theAnimation finished:(BOOL)flag{
NSLog(@"动画停止了");
}
网友评论