2014-04-04 5 views
0

을 사용하여 UIImageView을 계속 회전시키고 있으며 회전 각도를 가져 오려고합니다. 예상대로애니메이션보기에서 transform.rotation.z 값 받기

-(void)viewDidAppear:(BOOL)animated{ 

    [self spinAnimationOnView:self.myImageView 
         duration:2 
          repeat:HUGE_VAL]; 
} 

- (void)spinAnimationOnView:(UIView*)view duration:(CGFloat)duration repeat:(float)repeat{ 
    CABasicAnimation* rotationAnimation; 
    rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; 
    rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0]; 
    rotationAnimation.duration = duration; 
    rotationAnimation.repeatCount = repeat; 

    [view.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"]; 
} 

애니메이션이 동작합니다. 그러나 다음과 같이 회전 각도를 얻으려고합니다.

CGFloat angle = [(NSNumber *)[self.myImageView valueForKeyPath:@"layer.transform.rotation.z"] floatValue]; 

NSLog(@"ROTATION = %f", angle); 

출력은 항상 0입니다.

답변

1

애니메이션이 진행되는 동안 CALayer의 presentationLayer을 사용하여 레이어의 상태를 가져와야합니다. CALayer docs을 참조하십시오.

CGFloat angle = [[self.myImageView valueForKeyPath:@"layer.presentationLayer.transform.rotation.z"] floatValue]; 

NSLog(@"ROTATION = %f", angle);