CABasicAnimation制作简单动画
CABasicAnimation
CABasicAnimation是一个类,它继承于CAPropertyAnimation。它可以用来创建比较简单的动画,比如:位置的移动,图片大小的变化等。
而比较复杂的动画,可以利用简单动画的叠加实现。
CABasicAnimation自带的三个属性是:
@property(nullable, strong) id fromValue;
@property(nullable, strong) id toValue;
@property(nullable, strong) id byValue;
而一般我们创建一个CABasicAnimation的实例,是利用继承于它的父类CAPropertyAnimation的方法:
+ (instancetype)animationWithKeyPath:(nullable NSString *)path;
实例化所用KeyPath
在实例化一个CABasicAnimation时,发现后面需要一个(nullable NSString *)path
值,以下对KeyPath做一个汇总:
以下都是可以针对指定轴(x,y,z轴之一),添加动画效果
KeyPath | 作用 |
---|---|
transform.rotation | 绕x,y,z轴旋转 |
transform.scale | 按比例缩放 |
transform.translation | 平移 |
position | 平面上中心点位置的改变 |
比如设置一个绕x轴旋转的动画,可以这样设置:
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];
注:position是针对平面的,故只能 position.x 和 position.y
以下是单一添加动画效果
KeyPath | 作用 |
---|---|
opacity | 透明度 |
backgroundColor | 背景色 |
cornerRadius | 圆角 |
borderWidth | 边框 |
shadowColor | 阴影颜色 |
shadowOffset | 阴影偏移量 |
shadowOpacity | 阴影透明度 |
shadowRadius | 阴影圆角 |
shadowColor | 阴影颜色 |
还有一个特例
添加动画效果,还有一个特例bounds
,改变它的KeyPath如下。
KeyPath | 作用 |
---|---|
bounds.size | 改变体积大小 |
bounds.size.width | 改变体积的宽 |
bounds.size.height | 改变体积的高 |
bounds.origin.x | 改变位置的x值 |
bounds.origin.y | 改变位置的y值 |
设置动画属性
讲完动画的实例化,就要讲讲动画要添加改变的属性了。
先放上一些重要属性的汇总表吧。
属性 | 作用 |
---|---|
fromValue | 动画的起始属性 |
toValue | 动画结束属性 |
repeatCount | 动画执行次数 |
repeatDuration | 设置动画的时间 |
autoreverses | 动画结束时是否执行逆动画 |
removedOnCompletion | 动画结束后,是否会回到开始的值 |
fillMode | 动画填充方式 |
duration | 动画时长 |
设置动画的Value
fromValue
和toValue
是设置动画的起始和结束属性,这个属性,于创建动画时所用的KeyPath
有关。
比如:
当KeyPath
为transform.scale(缩放)
时,要这样设置属性:
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
// 设置缩放倍数
animation.fromValue = [NSNumber numberWithF