2011-11-25 3 views
0

메트로놈처럼 이미지를 앞뒤로 움직이는 이미지 애니메이션을 만들고 싶습니다. 애니메이션의 목표는 "회 전자 (spinner)"와 같은 효과를 시뮬레이션하는 것입니다. 상반부만으로 상상해보십시오. 화살표는 목표물에서 멈출 때까지 앞뒤로 움직입니다. enter image description hereUIImageView의 메트로놈과 유사한 애니메이션 iOS

지금까지 나는 화살표를 앞뒤로 움직일 수 있었지만 애니메이션의 앵커 포인트는 이미지의 중심입니다. 앵커가 이미지의 가장 아래쪽 중앙에 위치하기를 바랍니다. 메트로놈을 시뮬레이트하기 위해 앵커는 현재 위치 할 수 없습니다. 이 변경 작업을 수행하려면 어떻게해야합니까? 애니메이션 코드는 다음과 같습니다 :

#define RADIANS(degrees) ((degrees * M_PI)/180.0) 


CGAffineTransform leftWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(90)); 
CGAffineTransform rightWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(-90)); 

arrow.transform = leftWobble; // starting point 

[UIView beginAnimations:@"wobble" context:(__bridge void *)arrow]; 
[UIView setAnimationRepeatAutoreverses:YES]; // important 
[UIView setAnimationRepeatCount:10]; 
[UIView setAnimationDuration:.5]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(wobbleEnded:finished:context:)]; 

arrow.transform = rightWobble; // end here & auto-reverse 

[UIView commitAnimations]; 

답변

0

의 CALayer는 당신이 당신의 화살표 이미지의 하단에 설정할 수 있습니다 anchorPoint 속성이 있습니다.

Apple은이 작업을 수행하는 Metronome이라는 iOS 샘플 프로젝트를 사용했습니다. 더 이상 온라인에서 찾을 수없는 것 같습니다. 그러나 여기에서 코드 스 니펫이 있습니다.

// Set up the metronome arm. 
    metronomeArm = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"metronomeArm.png"]]; 

    // Move the anchor point to the bottom middle of the metronomeArm bounds, so rotations occur around that point. 
    metronomeArm.layer.anchorPoint = CGPointMake(0.5, 1.0); 
+0

'anchorPoint'는 어떤 단위입니까? 분명히 그들은 X와 Y 포인트 값입니다. 그래서 내 이미지의 하단 중앙에'CGPointMake (arrow.bounds.size.width/2, arrow.bounds.size.height) '라인을 따라 뭔가를 할 것인가? –

+0

Apple 샘플의 스 니펫은 이미지의 크기와 관련이 있다는 것을 보여줍니다. 0.5, 1.0은 가로로 중앙에, 아래로 세로로 의미합니다. 따라서 동일한 앵커 포인트 위치 지정이 필요하므로 정확히 그대로 사용할 수 있습니다. – Clafou

+0

감사합니다. anchorPoint 속성이 있음을 알지 못했습니다. –

관련 문제