내가해야할 일은 원형의 UIButton을 거의 배치하지 않고 버튼을 탭할 때마다 버튼이 원위치 (원의 상단, 즉 원의 첫 번째 버튼)에 애니메이션을 적용해야하므로 다른 모든 버튼은 탭 버튼이 맨 위에 오도록 적절하게 애니메이션되어야합니다.
자, 원 I 어떤 버튼이 태핑 될 때 모든 버튼 원 움직이는 것처럼 보이도록 CAAnimation를 이용하여 Z 축을 중심이 뷰 회전있어애니메이션이있는 동그라미에서의 뷰
double perAngle = 2 * M_PI/BUTTONS_COUNT;
for (int i = 0; i < BUTTONS_COUNT; i++) {
UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(sin(perAngle * i) + basePoint.x, cos(perAngle * i) + basePoint.y, Width, Height)];
[self.View addSubView:btn];
}
을 사용하여 버튼을 배치했다. 문제는 회전 할 각도를 결정할 수 없기 때문에 탭 버튼 만 다른 버튼이 아닌 상단으로 오게됩니다.
또는이를 달성하기위한 완전히 다른 접근 방식이 있습니까?
WAAAAY too 막연합니다. 당신은 당신이하려고하는 것을 당신이 알지 못하는 누군가가 충분히 자세하게 설명하려고 할 필요가 있습니다. 버튼을 서클에 배치했지만 회전 코드를 표시하지 않았다는 코드를 게시했습니다. 도움이 필요한 코드를 확인해야합니다. –
임의의 버튼을 맨 위로 돌릴 수 있고 다시 누른 다음 이미 회전 한 위치에서 맨 위로 이동할 수있게하려면 모든 버튼의 현재 위치를 알아야합니다. –
삼각법을 수행하거나 프레임을 수동으로 설정할 필요가 없습니다. 대신 원의 가운데에있는 모든 버튼을 서로 겹쳐 놓은 다음 변형을 설정하여 회전시키고 반경을 변환 한 다음 중심점을 궤도에 그리게됩니다. 참고로, 좌표는 Y 축에서 -1로 스케일 된 직교 좌표입니다. 즉, Y 축은 아래쪽을 가리키고, X 축은 오른쪽을 가리키며, 각도 0은 오른쪽에, 90은 아래로, 180은 왼쪽에 있고 270은 위로입니다. 회전은 시계 방향으로 진행됩니다. –