2010-07-28 6 views
0

나는 원형 경로를 따라 고르게 플로팅하고 싶고 그 경로를 따라 계속해서 회전시키려는 UIView에 5 개의 버튼이 있습니다. 분명히 말하자면 버튼을 회전시키지 않고 순환 경로를 따라 이동하기를 원합니다.뷰에서 회전 UIButtons

이것을 관리하는 가장 좋은 방법은 무엇입니까?

답변

1

각 시작점과 끝 각도를 조정하여 각 버튼의 초기 시작점을 고려하여 UIBezierPath 또는 CGPath을 만듭니다. 그런 다음 각 버튼/경로에 대해 CAKeyframeAnimation을 만들고 경로를 지정하고 자동 반복으로 설정 한 다음 해당 버튼의 레이어에 추가합니다.

UIBezierPath 방법 +bezierPathWithArcCenter:radius:startAngle:endAngle:clockwise:은 원형 경로를 만드는 데 도움이됩니다. 올바른 각도를 계산해야하지만, 이는 단지 약간의 수학 일뿐입니다.

1

경로를 따라 각 버튼을 개별적으로 애니메이션 할 이유가 없습니다. UIView에 5 개의 버튼이 있다고하셨습니다. 추가 한이 뷰를 회전하면 다른 모든 버튼이 회전하면서 경로로 요구하는 것과 동일한 효과를 제공합니다.

트릭은 당신이 UIView의 애니메이션 바로 가기보다는 명시 적으로 애니메이션을 필요가있다 :

CABasicAnimation* rotationAnimation = 
      [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; 
[rotationAnimation setToValue:[NSNumber numberWithFloat:DegreesToRadians(360)]]; 
// Make a full rotation in five seconds 
[rotationAnimation setDuration:5.0]; 
// Repeat forever. 
[rotationAnimation setRepeatCount:HUGE_VALF]; 
// Make the animation timing linear 
[rotationAnimation setTimingFunction: 
         [CAMediaTimingFunction 
         functionWithName:kCAMediaTimingFunctionLinear]]; 

[[rotationView layer] addAnimation:rotationAnimation forKey:nil]; 

변수 rotationView이 모든 버튼이 들어있는보기입니다. 이 시점에서해야 할 일은 처음에 버튼의 위치를 ​​계산하는 것입니다. 다른 모든 것은 당신을 위해 처리됩니다.

+0

그게 아주 까다 롭습니다 ...하지만 버튼 텍스트 또는 버튼 이미지는 ... 그것도 회전합니다 .... – makboney