2011-11-08 2 views
2

이것을 얻을 수 있습니까? 그렇다면 아무도 말해 줄 수 없습니까?회전 된 uiview의 네 점의 좌표

+1

일부 기본 trig (sin 및 cosine, arcsin 및 arccos)를 사용하여 회전 된 사각형의 모든 모서리의 좌표를 계산할 수 있습니다. –

+0

하지만 현재 origin.x와 origin.y 값만 있습니다. 이 방법으로 만 다른 좌표를 계산할 수 있습니까? –

답변

1
CGPoint topLeft = view.bounds.origin; 
topLeft = [[view superview] convertPoint:topLeft fromView:view]; 

CGPoint topRight = CGPointMake(view.bounds.origin.x + view.bounds.width, view.bounds.origin.y); 
topRight = [[view superview] convertPoint:topRight fromView:view]; 

// ... likewise for the other points 

제 포인트가되는 뷰의 좌표 공간에 계속 "똑바로". 그런 다음 다음 명령문은 부모 뷰의 좌표 공간에서 해당 점과 일치하는 점을 찾습니다. 변환되지 않은 뷰에 대한 참고 사항은 view.frame.origin과 같습니다. 위의 계산은 변형 된 뷰에 대해 view.frame의 모서리에 해당하는 값을 제공합니다.

+0

이것은 작동합니다 , 비록 내가 왼쪽 하단의 좌표를 얻는 방법을 잘 모르겠지만 이미지가 관련되어 있다면 view.image.size.width보다는 view.bounds.width를 사용하는 것이 더 정확하다. –

+0

왼쪽 하단 좌표를 계산했습니다. CGPoint bottomRight = CGPointMake (self.dragView.bounds.origin.x + self.dragView.image.size.width, self.dragView.bounds.origin.y + self.dragView.image. size.height); bottomRight = [[self.dragView superview] convertPoint : bottomRight fromView : self.dragView];' –

3
  • 이보기의 프레임의 네 개의 포인트를 획득 (view.frame)
  • CGAffineTransform이보기에 적용되는 검색 (view.transform)
  • 는이 같은 아핀 CGPointApplyAffineTransform를 사용하여 네 점 변환을 적용 (및 형제 자매 CGAffineTransform Reference 방법)
+0

테스트하지는 않았지만 변환의 원점을 만들기 위해 변환을 적용해야 할 수도 있습니다 (뷰의 anchorPoint, 변경하지 않은 경우 기본적으로 중심입니다). 0을 가리킴 , 0, 변환 자체를 적용하고 다시 번역을 수행하십시오. 아마도 두 경우 모두 시도해보십시오. 사용중인 좌표계 (즉, CGPoint 좌표가 표현되는 참조/원점/좌표 공간)를 관리하는 것을 잊지 마십시오 (아마도 superview의 경계 좌표계이지만 서브 뷰의 anchorPoint를 중심으로합니다) – AliSoftware