【发布时间】:2014-10-28 23:54:19
【问题描述】:
我正在为一个圆圈的笔划设置动画,它看起来像
我正在为背景制作一个圆圈,然后我使用相同的路径,但动画路径更细
CAShapeLayer *minutesBackground = [CAShapeLayer layer];
minutesBackground.path=[UIBezierPath bezierPathWithArcCenter:CGPointMake((screenWidth/2), (radiusMinutes+spacing)) radius:radiusMinutes startAngle:2*M_PI*0-M_PI_2 endAngle:2*M_PI*1-M_PI_2 clockwise:YES].CGPath;
minutesBackground.fillColor = clear;
minutesBackground.strokeColor = [UIColor blackColor].CGColor;
minutesBackground.lineWidth = minutesWidth+2;
minutesCircle = [CAShapeLayer layer];
minutesCircle.path=minutesBackground.path;
minutesCircle.fillColor=clear;
minutesCircle.strokeColor=[UIColor orangeColor].CGColor;
minutesCircle.lineWidth = minutesWidth;
minutesCircle.shadowRadius = 2;
minutesCircle.shadowColor = [UIColor orangeColor].CGColor;
minutesCircle.shadowOpacity = 5;
minutesCircle.shadowOffset = CGSizeMake(0.0, 0.0);
动画是我在互联网上找到的 :)
minutesAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
minutesAnimation.duration = work;
minutesAnimation.repeatDuration=work;
minutesAnimation.removedOnCompletion=YES;
minutesAnimation.fillMode = kCAFillModeRemoved;
minutesAnimation.fromValue=@(0);
minutesAnimation.toValue=@(1);
minutesAnimation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
[minutesCircle addAnimation:minutesAnimation forKey:@"drawCircleAnimation"];
如果我将它设置为重复一段时间,它具有所需的效果,它会绘制,最后它被删除,然后再次绘制。
但是,我有一个在动画完成时弹出的按钮,按下该按钮时,我禁用它并将其 alpha 设置为 0.0 以隐藏它,然后重新启动计时器。
当我重新启动计时器时,之前绘制的圆圈仍然存在。 (可能是一些线程问题?)
任何帮助表示赞赏,不确定我是否共享了足够的代码.. 让我知道是否有更多帮助我的情况:)
【问题讨论】:
标签: ios animation core-animation quartz-core cabasicanimation