2016-06-24 4 views
1

Я использую нижеследующий код, чтобы нарисовать слой Pie slice с помощью CAShapeLayer.CAShapeLayer fillcolor arc animation не работает

CGFloat endAngle = (M_PI*2/5)-M_PI_2; 

CAShapeLayer *outerBorderCircle = [CAShapeLayer layer]; 
int outerradius = self.frame.size.width/2; 
UIBezierPath *path = [UIBezierPath bezierPath]; 
[path moveToPoint:CGPointMake(outerradius, outerradius)]; 
[path addLineToPoint:CGPointMake(outerradius, self.outerCircleBorder)]; 
[path addArcWithCenter:CGPointMake(outerradius,outerradius) radius:outerradius-self.outerCircleBorder startAngle:-M_PI_2 endAngle:endAngle clockwise:YES]; 
[path closePath]; 
outerBorderCircle.path = path.CGPath; 

outerBorderCircle.fillColor = [UIColor whiteColor].CGColor; 
outerBorderCircle.strokeColor = self.borderShadowColor.CGColor; 
outerBorderCircle.lineWidth = self.outerCircleBorder; 
outerBorderCircle.lineJoin = kCALineJoinRound; 
outerBorderCircle.zPosition = MAXFLOAT; 

CABasicAnimation *startanimation = [CABasicAnimation animationWithKeyPath:@"fillColor"]; 
startanimation.removedOnCompletion = YES; 
startanimation.fromValue = (id)[[UIColor clearColor] CGColor]; 
startanimation.toValue = (id)[[UIColor whiteColor] CGColor]; 
startanimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 
startanimation.duration = 10.0; 
[startanimation setFillMode:kCAFillModeBoth]; 

[outerBorderCircle addAnimation:startanimation forKey:@"fillColor"]; 

[self.layer addSublayer:outerBorderCircle]; 

Но анимация часть работает как исчезают в выцветании. Но мне нужно оживить дугообразную анимацию.

Пожалуйста, помогите мне.

ответ

0

Для анимации хода вы должны анимировать эти свойства:

-strokeStart

-strokeEnd

Из документации:

В сочетании со свойством strokeEnd, это свойство определяет субрегион пути к инсульту. Значение в этом свойстве указывает относительную точку вдоль пути, по которой нужно начать глажение, а свойство strokeEnd определяет конечную точку. Значение 0.0 представляет начало пути, а значение 1.0 представляет собой конец пути. Значения между ними интерпретируются линейно вдоль пути длина.

[UPDATE]

CABasicAnimation *drawAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"]; 
drawAnimation.duration   = timeInSeconds; 
drawAnimation.fromValue = [NSNumber numberWithFloat:startAngle]; 
drawAnimation.toValue = [NSNumber numberWithFloat:endAngle]; 
drawAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
[circle addAnimation:drawAnimation forKey:@"drawCircleAnimation"]; 

Кредиты Rob Mayoff

+0

Спасибо за ваш повторе. Не могли бы вы прислать мне пример кода. – Thukaram

+0

Обновление @Thukaram – Andrea

 Смежные вопросы

  • Нет связанных вопросов^_^