0

им оживляющий ход круга, и это выглядит как-тоАнимированный Piechart fillmode?

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

i'm делая круг для фона, то я использовать один и тот же путь, с более тонким ходом на пути анимации

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); 

анимация что-то i've найти на межсетях :)

minutesAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"]; 
minutesAnimation.duration = work; 
minutesAnimation.repeatDuration=work; 
minutesAnimation.removedOnCompletion=YES; 
minutesAnimation.fillMode = kCAFillModeRemoved; 
[email protected](0); 
[email protected](1); 
minutesAnimation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 
[minutesCircle addAnimation:minutesAnimation forKey:@"drawCircleAnimation"]; 

если я установить его повторяться в течение продолжительности, он имеет желаемый эффект, он рисует, в конце концов он удаляется, и он снова рисует.

Однако у меня есть кнопка, которая появляется при завершении анимации, при нажатии этой кнопки я отключу ее и устанавливаю ее альфа 0.0, чтобы скрыть ее, и перезапустить таймер.

Когда я перезапускаю таймер, ранее выделенный круг все еще там. (Какую-нить вопрос может быть?)

любая помощь оценили, не уверен, если я поделился достаточно кода .. дайте мне знать, если больше помог бы мой случай :)

ответ

1

Вы пытаетесь иметь minutesCircle исчезнет, ​​как только анимация готово?

Если да, то проблема в том, что вы определили ваш minutesCircle со значениями по умолчанию для strokeStart (0.0) и strokeEnd (1.0). minutesAnimation оживляет изменение strokeEnd от 0.0 до 1.0. Но, когда анимация завершается и удаляется (потому что вы указали removedOnCompletion из YES и fillMode из kCAFillModeRemoved), то strokeEnd из minutesCircle возвращается в исходное значение, 1.0 (что означает, что оранжевая дуга будет оставаться видимым, когда анимация удаляется).

Если вы хотите, чтобы это сделать minutesCircle не видно после того, как анимация будет сделано, когда вы сначала создать minutesCircle, указать, что оба strokeStart и strokeEnd являются 0:

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

Теперь, когда ваша анимация завершается и удалено, strokeEnd из minutesCircle вернется к значению, которое было изначально, то есть 0.0, т. е. оранжевый ход больше не виден.

+0

Установка этих двух значений остановила анимацию вообще –

+0

Хорошо, я добираюсь туда: D спасибо большое! : D –