나는 원형 경로를 따라 고르게 플로팅하고 싶고 그 경로를 따라 계속해서 회전시키려는 UIView에 5 개의 버튼이 있습니다. 분명히 말하자면 버튼을 회전시키지 않고 순환 경로를 따라 이동하기를 원합니다.뷰에서 회전 UIButtons
이것을 관리하는 가장 좋은 방법은 무엇입니까?
나는 원형 경로를 따라 고르게 플로팅하고 싶고 그 경로를 따라 계속해서 회전시키려는 UIView에 5 개의 버튼이 있습니다. 분명히 말하자면 버튼을 회전시키지 않고 순환 경로를 따라 이동하기를 원합니다.뷰에서 회전 UIButtons
이것을 관리하는 가장 좋은 방법은 무엇입니까?
각 시작점과 끝 각도를 조정하여 각 버튼의 초기 시작점을 고려하여 UIBezierPath
또는 CGPath
을 만듭니다. 그런 다음 각 버튼/경로에 대해 CAKeyframeAnimation을 만들고 경로를 지정하고 자동 반복으로 설정 한 다음 해당 버튼의 레이어에 추가합니다.
UIBezierPath
방법 +bezierPathWithArcCenter:radius:startAngle:endAngle:clockwise:
은 원형 경로를 만드는 데 도움이됩니다. 올바른 각도를 계산해야하지만, 이는 단지 약간의 수학 일뿐입니다.
경로를 따라 각 버튼을 개별적으로 애니메이션 할 이유가 없습니다. 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이 모든 버튼이 들어있는보기입니다. 이 시점에서해야 할 일은 처음에 버튼의 위치를 계산하는 것입니다. 다른 모든 것은 당신을 위해 처리됩니다.
그게 아주 까다 롭습니다 ...하지만 버튼 텍스트 또는 버튼 이미지는 ... 그것도 회전합니다 .... – makboney