2008-10-14 6 views
3

코어 애니메이션을 사용하여 임의의 점을 중심으로 레이어를 회전하려면 어떻게해야합니까? (내 경우 회전하려는 레이어 안쪽에있는 포인트)코어 애니메이션 임의의 점을 중심으로 레이어 회전

앵커 포인트를 변경 할 때마다 뭔가 잘못된 것이 없기 때문에 앵커 포인트를 변경하지 않고이 작업을 선호합니다. 레이어.

나는 그런 일을 시도했지만 작동하지 않았다 :

[UIImageView beginAnimations:nil context:nil]; 
CATransform3D rotationTransform = CATransform3DIdentity; 
rotationTransform = CATransform3DTranslate(rotationTransform, 0.0, -100.0, 0.0); 
rotationTransform = CATransform3DRotate(rotationTransform, DegreesToRadians(180), 
         0.0, 0.0, 1.0); 
rotationTransform = CATransform3DTranslate(rotationTransform, 0.0, 100.0, 0.0) 
shape1.layer.transform = rotationTransform; 
[UIImageView commitAnimations]; 

그것은 회전축처럼 보이는이 회전하는 동안 이동합니다.

답변

0

마지막으로 회전축에 중심이있는 새로운 더 큰 레이어를 만들고 하위 레이어로 회전하려는 레이어를 설정하여 마지막으로 수행했습니다.

는 다음 나는 더 큰 계층 대신 서브 층

+0

이것은 특정 상황에서 효과가있을 수 있지만, 원하는 회전이 컨테이너를 밀어 넣으면 실패 할 수 있다는 일반적인 해결책은 아니다. 레이어 크기 제한을 초과하는 레이어. 앵커 포인트가 실제로 필요한 것입니다. – Olie

2

여러 변환을 추가하여이 작업을 수행 할 수 있습니다 :

  1. 레이어
  2. (rotCenterX, rotCenterY)에 의해 레이어를 번역 회전 (-rotCenterX, rotCenterY)에 의해 레이어 변환을
3

귀하의 솔루션은 잘하지만 '예상 방법은'앵커 포인트를 사용하는 것입니다 돌립니다.

고정 점을 설정하면 위치가 고정 점에 첨부되어 움직입니다. 즉, anchorPoint가 수퍼 레이어의 좌표계에있는 위치 집합을 설정합니다.

당신은 뭔가 효과가 있기 때문에 아마도 가치가 있지만, 다음 번에는 회색 문제에 추가 할만한 가치가있을 것입니다.

행운을 빈다.

1

회전이있는 것처럼 번역이 애니메이션이므로 초기 솔루션이 좋지 않습니다. 따라서 회전 중 "맞춤 중심"이 회전 중에 이동합니다. 당신이 실제로 원하는 것은 애니메이션이없는 번역과 애니메이션이 아닌 번역을 기반으로 한 애니메이션의 회전입니다. 문제는 현재 동일한 문제가 있으며 해결 방법을 찾을 수 없다는 것입니다. 나는 그 순간에 CATransaction을보고 있는데, 그 열쇠가 될 수 있기를 바란다 ...

관련 문제