控制速度在CABasicAnimation中

时间:2015-07-29 15:01:21

标签: ios objective-c animation

我是iOS应用开发的新手。我正在使用CABasicAnimation在我的应用程序屏幕上水平绘制一条线。我成功地绘制了线但是我无法控制动画的速度。

以下是绘制线的代码。

-(void)drawLine{

    _boxPath = [UIBezierPath bezierPath];
    [_boxPath moveToPoint:CGPointMake(0.0,60.0)];
    [_boxPath addLineToPoint:CGPointMake(self.view.bounds.size.width/2, 60.0)];



    CAShapeLayer *layer = [CAShapeLayer layer];
    layer.frame = self.view.bounds;
    layer.strokeColor = [[UIColor redColor] CGColor];
    layer.fillColor = [[UIColor blueColor] CGColor];
    layer.lineWidth = 5.0f;
    layer.lineJoin = kCALineJoinBevel;
    layer.path = _boxPath.CGPath;
    layer.speed = 3.0;


    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"line"];
    animation.duration = 3.0;
    [self.view.layer addSublayer:layer];
    [layer addAnimation:animation forKey:@"line"];
}

无论我为图层速度和动画持续时间改变什么值,动画速度都没有变化。我想减慢画线的速度。

任何建议都会有很大的帮助

1 个答案:

答案 0 :(得分:2)

你的代码是无稽之谈。三点:

  • 如果您要使用隐式动画,则可以使用CATransaction setAnimationDuration:来设置更长的持续时间。

  • 如果您要使用显式动画,请正确使用。创建CABasicAnimation只是添加它什么都不做;你需要先配置它。没有"线"关键路径让你的动画毫无意义。

  • 你无法动画。您必须在某些内容中为更改设置动画。您可能希望设置动画的是strokeEnd从零变为一。