2011-12-23 4 views
0

이미지를 변환해야하는 곳에 응용 프로그램을 만들고 이미지를 뷰의 아무 곳에 나 배치 할 수 있습니다. 하지만 코드 아래 사용하여 원근 변환을하고있는 중이 야 때 직면하고있는 문제내 3 차원 회전 이미지가 다른 이미지와 교차하는 이유는 무엇입니까?

CATransform3D rotationAndPerspectiveTransform = self.layer.transform; 
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 22.5f * M_PI/180.0f, 0, 1, 0.0f); 
self.layer.transform = rotationAndPerspectiveTransform; 

그것은 완벽하게 작동하지만, 나는 "변화 전망"영상 (3D)을 통해 2D 이미지를 배치, 2 차원 이미지의 교차를 시도 할 때 3D 이미지. 3D 이미지 위에 나타나지 않습니다.

왜 이런 일이 발생합니까?

답변

2

두 CALayers가 형제 인 경우 동일한 3D 공간에 존재합니다. 위와 같이 하나의 레이어를 회전하면 (코드의 원근감 부분이 없더라도 my older answer에서 그려 짐), 앵커 포인트에 대해 그렇게 할 수 있습니다.

기본적으로 앵커 포인트는 레이어의 중심이므로 0 Z 평면으로 분할됩니다. 그 중 절반은 0보다 작고 절반은 0보다 작습니다.

원본 레이어의 형제로 새 레이어를 만들면 Z 좌표가 0이므로 회전 된 레이어의 중심과 교차합니다. 해당 레이어를 기존 레이어 위에 배치하려면 새 레이어의 zPosition 속성을 회전 된 레이어 위에 전체 레이어를 놓을만큼 충분히 큰 양수 (또는 음수 일 수 있습니다.)로 설정하면됩니다.

또 다른 가능성은 회전 된 레이어의 슈퍼 레이어의 형제와 같이 회전 된 레이어 앞에 놓고 자하는 레이어를 배치하는 것입니다. 형제 계층의 3 차원 위치 지정을 수행하기 전에 먼저 계층 구조가 적용됩니다.

+0

예 : 설명을위한 많은 감사합니다. – iphonic

관련 문제