CABasicAnimation的基本使用

来源:互联网 发布:java发牌程序 编辑:程序博客网 时间:2024/05/22 13:16

CABasicAnimation是关键帧动画,所谓关键帧动画,就是将Layer的属性作为KeyPath来注册,通过指定动画的起始帧和结束帧及其他所需参数,然后自动计算和实现中间的过渡动画的一种动画方式。

  • fromValue : 动画开始起始帧
  • toValue     : 动画结束帧
还可设置duration 等参数.
另附绘制心形动画部分代码如下:
- (void)TheFirstAnimation{        UIBezierPath *_path;        //贝塞尔曲线,以下是4个角的位置,相对于_testView1    CGPoint point1= CGPointMake(0, Y);    CGPoint point2= CGPointMake(startX, Y);    CGPoint point3= CGPointMake(startX+5, Y-20);    CGPoint point4= CGPointMake(startX+10, Y+20);    CGPoint point5= CGPointMake(startX+15, Y);    CGPoint point6= CGPointMake(startX+25, Y-50);    CGPoint point7= CGPointMake(startX+35, Y+50);    CGPoint point8= CGPointMake(startX+40, Y+10);    CGPoint point9= CGPointMake(startX+45, Y+10);    CGPoint point10= CGPointMake(startX+50, Y-10);    CGPoint point11= CGPointMake(startX+55, Y);    CGPoint point12= CGPointMake(centerX-2, Y);    CGPoint point0= CGPointMake(ScreenWidth, Y);        _path=[UIBezierPath bezierPath];    [_path moveToPoint:point1];//移动到某个点,也就是起始点    [_path addLineToPoint:point2];    [_path addLineToPoint:point3];    [_path addLineToPoint:point4];    [_path addLineToPoint:point5];    [_path addLineToPoint:point6];    [_path addLineToPoint:point7];    [_path addLineToPoint:point8];    [_path addLineToPoint:point9];    [_path addLineToPoint:point10];    [_path addLineToPoint:point11];    [_path addLineToPoint:point12];    //绘制曲线    [_path addQuadCurveToPoint:CGPointMake(centerX, Y-100) controlPoint:CGPointMake(startX+20, Y-130)];    [_path addQuadCurveToPoint:CGPointMake(centerX+2, Y) controlPoint:CGPointMake(centerX+centerX-startX-20, Y-130)];        [_path addLineToPoint:point0];        shapeLayer = [CAShapeLayer layer];    shapeLayer.path=_path.CGPath;    shapeLayer.fillColor=[UIColor clearColor].CGColor;//填充颜色    shapeLayer.strokeColor=[UIColor blueColor].CGColor;//边框颜色    [self.view.layer addSublayer:shapeLayer];            //动画    CABasicAnimation *pathAniamtion = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];    // 时间    pathAniamtion.duration = 3;    //动画节奏    pathAniamtion.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];    pathAniamtion.fromValue = [NSNumber numberWithFloat:0.0f];    pathAniamtion.toValue = [NSNumber numberWithFloat:100.0];//    pathAniamtion.autoreverses = YES; //动画逆方向    pathAniamtion.delegate = self;    [shapeLayer addAnimation:pathAniamtion forKey:@"animation1"];    }- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{    [shapeLayer removeFromSuperlayer];        [self TheFirstAnimation];}


0 0