Animate fillColor属性

时间:2014-05-07 07:08:57

标签: ios core-animation

我正在尝试填充一个圆圈(类似馅饼)。 我想把它从0填充到360 这就是我所做的

CAShapeLayer *circleLayer=[CAShapeLayer layer];
    circleLayer.path=[UIBezierPath bezierPathWithArcCenter:CGPointMake(150, 150) radius:100 startAngle:0 endAngle:360 clockwise:YES].CGPath;
    circleLayer.strokeColor=[UIColor redColor].CGColor;
    circleLayer.fillColor=[UIColor blueColor].CGColor;
    [self.view.layer addSublayer:circleLayer];




    //adding animation
    CABasicAnimation *basicAnimation=[CABasicAnimation animationWithKeyPath:@"fillColor"];
    basicAnimation.fillMode=kCAFillModeForwards;
    basicAnimation.fromValue=(id)[UIColor clearColor].CGColor;
    basicAnimation.toValue=(id)[UIColor yellowColor].CGColor;
    basicAnimation.duration=1.5f;
    basicAnimation.repeatCount=10;
    basicAnimation.autoreverses=YES;
    [circleLayer addAnimation:basicAnimation forKey:@"fillColor"];

我无法弄清楚,我如何实现从开始角度到结束角度的颜色填充效果。 感谢

3 个答案:

答案 0 :(得分:3)

您对自己想做的事情的描述不清楚。你想创造一个时钟擦拭"效果,颜色变化扫描像时钟的秒针?

如果有,请查看我在github上创建的这个演示应用程序:

github animation demo project

请特别注意自述文件中的时钟擦除动画说明。

以下是时钟擦除动画的样子:

enter image description here

此项目为图像视图的蒙版设置动画以执行时钟擦除显示动画,但将形状图层设置为视图的内容图层而不是将其设置为蒙版将是一件简单的事情。

答案 1 :(得分:0)

CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
animation.duration = 0.7f;
animation.fromValue = [NSNumber numberWithFloat:0.0f];
animation.toValue = [NSNumber numberWithFloat:1.0f];
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
[circleLayer addAnimation:animation forKey:@"strokeEnd"];

答案 2 :(得分:0)

我已经为类似的要求实现了一个形状图层子类。这是Github link。根据您的要求,圆弧起始半径为0.0f,圆弧半径为圆半径。您也可以在该链接中引用示例项目。