以可变汇率

时间:2016-05-21 15:54:21

标签: ios objective-c animation cashapelayer cabasicanimation

我有一系列弧线,都是用这样的代码创建的,并用CABasicAnimation @“strokeEnd”进行动画制作。

        if (!_fourthShapeLayer) {
            _fourthPath =  [UIBezierPath bezierPathWithArcCenter:CGPointMake(rect.size.width / 2, rect.size.height / 2)
                                                         radius:rect.size.width / 2 - 9.5
                                                     startAngle:startAngle
                                                       endAngle:startAngle - (endAngle - startAngle)
                                                      clockwise:YES];
            _fourthShapeLayer = [CAShapeLayer layer];
            _fourthShapeLayer.path = _fourthPath.CGPath;
            _fourthShapeLayer.fillColor = [UIColor clearColor].CGColor;
            _fourthShapeLayer.strokeColor = [UIColor colorWithHue:.33888889 saturation:.62 brightness:0.62 alpha:1.0].CGColor;
            _fourthShapeLayer.lineWidth = 3.0;
            _fourthShapeLayer.rasterizationScale = 2.0 * [UIScreen mainScreen].scale;
            _fourthShapeLayer.shouldRasterize = YES;
        }

        CABasicAnimation *strokeAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
        strokeAnimation.fromValue = [NSNumber numberWithFloat:0.0];
        strokeAnimation.toValue = [NSNumber numberWithFloat:1.0];
        strokeAnimation.duration = 1.0;
        strokeAnimation.speed = 1.0;
        [_fourthShapeLayer addAnimation:strokeAnimation forKey:@"stroke"];

        [self.layer addSublayer:_fourthShapeLayer];

定义路径时的颜色和半径会有所不同。

我想改变弧线动画的速率来执行以下操作:所有都在同一时间开始和结束,但速率不同。基本上,一些弧线开始快速结束,其他弧线开始缓慢而快速结束 - 所有弧线都以不同的速率开始。

如果我可以定义这样绘制的弧量,那将是很好的:pow((elapsedAnimationTime / totalAnimationTime),1.05) - 改变'功率'(不同弧线的1.05,1.02,.97,.91,例如)。

有没有人有任何建议?最初我设置了一个定时器并调用了drawRect:每百分之一秒,根据上面提到的'power'函数定义路径端点 - 但当然这是一个操作成本太高。

帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

您可以使用自定义timingFunction,例如:

animation.timingFunction = [CAMediaTimingFunction functionWithControlPoints:0.5:0:0.9:0.7];

有关此内容的更多信息:Animations Explained