CABasicAnimation使用方法

2018-07-14  本文已影响0人  没脑子的程序员

CABasicAnimation用于实现两个状态之间的动画,只需要给出一个初始状态和一个结束状态,系统将自动实现两个状态之间的动画效果

UIView *demoView = [[UIView alloc]init];
demoView.frame = CGRectMake(100, 100, 50, 50);//position为(125,125)
demoView.backgroundColor = [UIColor whiteColor];
[self.view addSubview:demoView];

CABasicAnimation *anima = [CABasicAnimation animationWithKeyPath:@"position"];
anima.fromValue = [NSValue valueWithCGPoint:CGPointMake(200, 300)];
anima.toValue = [NSValue valueWithCGPoint:CGPointMake(300, 500)];
anima.duration = 3.0f;
anima.beginTime = CACurrentMediaTime() + 1;
[demoView.layer addAnimation:anima forKey:@"positionAnimation"];

上面的代码的意思是,1秒后将View的positionfromValue移动到toValue,该动画持续3秒钟

KeyPath填写的动画需要改变的参数,这个参数是CALayer的参数(CABasicAnimation是对CALayer进行展示动画的),CALayer中注释中有Animatable的参数都是支持动画效果的。

fromValue指定动画的初始状态
toValue指定动画的结束状态
byValue指定动画的增量

当只指定一个状态时:

只指定fromValue,视图的原有状态将变成结果状态,参考上面的代码里参数的值,视图的中心将从(200,300)移动到(125,125)

只指定toVaule,参考上面的代码里参数的值,视图的中心将从(125,125)移动到(300, 500)

只指定byValue,如(byX,byY),视图中心将从(125,125)移动到(125+byX,125+byY)

当指定两个状态的时:

toValuefromValue,不需要解释了吧

toValuebyValie,如(byX,byY),视图中心将从(200-byX,300-byY)移动到(300,500)

fromValuebyValue,如(byX,byY),视图中心将从(200,300)移动到(200+byX,300+byY)

简单点说 fromValue + byValue = toValue,最后能等得出toValuefromValue

上面三个值不能同时指定,同时指定动画初始状态和结果状态将不能确定。

- (void)addAnimation:(CAAnimation *)anim forKey:(nullable NSString *)key;

最后将动画添加到视图的CALayer层上,key在需要检测动画播放进度或者是移除动画时会使用的,请注意最好不要重复。

上一篇 下一篇

猜你喜欢

热点阅读