iOS - CABasicAnimation(基础动画)

简介

基础动画主要提供了对CALayer可变属性进行简单动画的操作。比如:位移、透明度、缩放、旋转、背景色等等。
使用 CABaseAnimation 基本思路就是设置好要调整的属性、初始值、结束值、插值模式等,然后将动画加入到相应的layer上去。
CABasicAnimation可以设定keyPath的起点值,终点值,动画会沿着设定点进行移动。 CABasicAnimation可以看成是只有两个关键点的特殊CAKeyFrameAnimation。

属性

属性解释
fromValuekeyPath对应的初始值
toValuekeyPath对应的结束值
byValue所改变属性相同起始值的改变量

keyPath 属性

属性解释
transform3D变换,[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.5, 0.5, 0)],直接进行3D变换
transform.scale缩放,@(1.5),放大1.5倍
transform.scale.x宽度缩放,@(1.5),宽放大1.5倍
transform.scale.y高度缩放,@(1.5),高放大1.5倍
transform.rotation.x围绕x轴旋转,@(M_PI),x轴旋转180度
transform.rotation.y围绕y轴旋转,@(M_PI),y轴旋转180度
transform.rotation.z围绕z轴旋转,@(M_PI),z轴旋转180度
position位置(中心点的改变),[NSValue valueWithCGPoint:CGPointMake(100, 100)],中心点变为(100,100)
opacity透明度,@(0.5),透明度变为0.5
bounds大小的改变,中心点保持不变,[NSValue valueWithCGRect:CGRectMake(0, 0, 300, 300)],大小变为(300,300)
cornerRadius圆角的设置 ,@(5),圆角设置为5
backgroundColor背景颜色变换,(id)[UIColor redColor].CGColor,背景改为红色contents,可以改变layer展示的图片,(id)[UIImage imageNamed:@“12.png”].CGImage,将UIView的展示图片改为12.png
strokeStart从起始点开始变化,fromValue = 0,toValue = 1,为CAShapeLayer的属性
strokeEnd从结束的位置开始变化,fromValue = 1,toValue = 0.5,为CAShapeLayer的属性
path根据路径来改变
rotaion.x旋转,弧度,X轴
rotaion.y旋转,弧度,Y轴
rotaion.z旋转,弧度,Z轴
rotaion旋转,弧度,Z轴,完全等同于rotation.z
contents内容,比如UIImageView的图片 imageAnima.toValue = (id)[UIImage imageNamed:@“to”].CGImage;
opacity透明度 如@(0.7)
contentsRect.size.width横向拉伸缩放 @(0.4)最好是0~1之间的
margin布局
zPosition翻转
borderWidth边框宽
frame大小位置
hidden显示隐藏
mask遮罩
masksToBounds蒙版
shadowColor阴影颜色
shadowOffset阴影偏移量
shadowOpacity阴影不透明的
shadowRadius阴影半径

实践

位置动画

    self.animationView = [[UIView alloc]init];
    self.animationView.frame = CGRectMake(0, kHeight/2-50, 50, 50);
    self.animationView.backgroundColor = [UIColor greenColor];
    [self.view addSubview:self.animationView];
    
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
    animation.fromValue = [NSValue valueWithCGPoint:CGPointMake(16, 16)];
    animation.toValue = [NSValue valueWithCGPoint:self.view.center];
    animation.duration = 1.0;
    animation.fillMode = kCAFillModeBoth;
    animation.removedOnCompletion = NO;//动画结束后不回到原始状态
    animation.autoreverses = YES;//允许反向动画
    animation.repeatCount = HUGE_VALF;//无限循环
    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
    [self.animationView.layer addAnimation:animation forKey:@"positonAnimation"];

背景颜色动画

    self.animationView = [[UIView alloc]init];
    self.animationView.frame = CGRectMake(0, kHeight/2-50, 50, 50);
    self.animationView.backgroundColor = [UIColor greenColor];
    [self.view addSubview:self.animationView];
    
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
    animation.fromValue = (id)[UIColor cyanColor].CGColor;
    animation.toValue = (id)[UIColor magentaColor].CGColor;
    animation.duration = 1.0;
    animation.fillMode = kCAFillModeBoth;
    animation.removedOnCompletion = NO;//动画结束后不回到原始状态
    animation.autoreverses = YES;//允许反向动画
    animation.repeatCount = HUGE_VALF;//无限循环
    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
    [self.animationView.layer addAnimation:animation forKey:@"backgroundColorAnimation"];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值