美文网首页
CABasicAnimation使用方法

CABasicAnimation使用方法

作者: 没脑子的程序员 | 来源:发表于2018-07-14 00:19 被阅读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在需要检测动画播放进度或者是移除动画时会使用的,请注意最好不要重复。

    相关文章

      网友评论

          本文标题:CABasicAnimation使用方法

          本文链接:https://www.haomeiwen.com/subject/mjtlpftx.html