2014-09-02 2 views
0

Так что я живой путь окружности как таковой (отлично работает):Текущее значение для CABasicAnimation

CGPoint center = CGPointMake([self bounds].size.width/2.0, [self bounds].size.height/2.0); 

circle.path = [UIBezierPath bezierPathWithArcCenter:center 
              radius:radius-13 startAngle:DEGREES_TO_RADIANS(0) endAngle:DEGREES_TO_RADIANS([self percentageToAngle:100]) clockwise:NO].CGPath; 


circle.fillColor = [UIColor clearColor].CGColor; 
circle.strokeColor = [UIColor blackColor].CGColor; 
circle.lineWidth = 27.0; 

[self.layer addSublayer:circle]; 

float currentAngle = [(NSNumber *)[ sublayer valueForKeyPath:@"strokeEnd" ] floatValue]; 

CABasicAnimation *drawAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"]; 

drawAnimation.duration   = 2.0; 
drawAnimation.repeatCount   = 0.0; 
drawAnimation.removedOnCompletion = NO; 


drawAnimation.fromValue = [NSNumber numberWithFloat:0.0]; 
drawAnimation.toValue = [NSNumber numberWithFloat:1.0]; 

drawAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 

drawAnimation.delegate = self; 
[drawAnimation setValue:kAnimationName forKey:kLayerName]; 
[circle addAnimation:drawAnimation forKey:kAnimationName]; 

Если я остановить анимацию в середине потока, как я получить текущее значение это в? Либо угол, либо просто значение между значениями fromValue и toValue?

ответ

-2

Попробуйте это, когда остановите анимацию.

float currentRad = [[[circle.layer presentationLayer] valueForKeyPath:@"transform.rotation.z"] floatValue]; 
+0

Спасибо за ответ. Но нет, это не сработает. Я ничего не вращаю вокруг любой оси. Анимация рисует путь, который проходит по пути круга. Я пробовал аналогичную вещь с valueForKeyPath: @ "strokeEnd", но это всегда 1, независимо от того, когда я останавливаю анимацию. – user3564870

+0

Прости, что пропущено. Я занимался исследованиями несколько часов, но не могу понять. – oddeyes