gpt4 book ai didi

ios - 动画饼图填充模式?

转载 作者:行者123 更新时间:2023-11-29 02:33:33 25 4
gpt4 key购买 nike

我正在制作圆圈的动画,它看起来像

dribbble.com/shots/560534-Countdown/attachments/42066?project_id=57064

我正在为背景制作一个圆圈,然后我对动画路径使用相同的路径,笔触更细

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 以隐藏它,然后重新启动计时器。

当我重新启动计时器时,之前绘制的圆圈仍然存在。 (可能是一些线程问题?)

感谢任何帮助,不确定我是否共享了足够的代码..让我知道是否有更多帮助我的情况:)

最佳答案

您是否要在动画完成后让 minutesCircle 消失?

如果是这样,问题是您使用 strokeStart (0.0) 和 的默认值定义了 minutesCircle strokeEnd(1.0)。 minutesAnimation 正在动画化 strokeEnd0.01.0 的变化。但是,当动画完成并被删除时(因为您指定了 YESremovedOnCompletionkCAFillModeRemovedfillMode ),minutesCirclestrokeEnd 恢复到它的原始值,1.0(这意味着当动画被移除时,橙色圆弧将保持可见) .

如果你想让 minutesCircle 在动画完成后不可见,当你第一次创建 minutesCircle 时,指定 strokeStartstrokeEnd0:

minutesCircle.strokeStart = 0.0;
minutesCircle.strokeEnd = 0.0;

现在,当您的动画完成并被移除时,minutesCirclestrokeEnd 将恢复为原来的值,即 0.0,即使橙色描边不再可见。

关于ios - 动画饼图填充模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26620536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com