적용한 후 UIView의 크기를 가져옵니다 :어쩌면 내가 어떻게 든 간과 매우 간단한 일이다, 나는이 질문에 대한 답을 찾을 수 없습니다 놀랐습니다 CGAffineTransform
나는에 CGAffineTransform을 적용 후의 UIView의 실제 크기를 얻는 방법 그것?
예 :
내 UIView의 크기가 300 x 200 인 경우 스케일링 변환을 적용하여 수평 및 수직 모두 요소 2를 적용 해 봅니다. 이제 UIView는 화면에서 600 x 400을 차지하지만 경계선과 크기의 경계는 여전히 크기를 반환합니다. 300 x 200 ... UIView의 실제 크기는 어디에서 찾을 수 있습니까?
ps. 내가 uiview도 회전하고 싶다는 언급을 잊어 버렸습니다. 스케일링 만 적용하면 CGSizeApplyAffineTransform은 훌륭하게 작동하지만 회전이있을 경우 제대로 작동하지 않습니다.
편집 : drawnonward가 올바른 방향으로 절 지적, 난 그냥 컴파일 조금에게 코드를 세련되고 여기있다 :
UIView* view = (your view being transformed);
CGAffineTransform trans = (view.transform or create a new transformation);
CGRect rect = [view bounds];
CGMutablePathRef path = CGPathCreateMutable();
rect.origin = CGPointZero;
CGPathAddRect(path , &trans , rect);
rect = CGPathGetBoundingBox(path);
CGPathRelease(path);
지금 rect.size 변환과 뷰의 크기가 적용 포함 그려서 다시 감사드립니다
사과 문서에서 "프레임"에 대한 설명서는 다음과 같습니다. 경고 : transform 속성이 ID 변환이 아닌 경우이 속성의 값은 정의되지 않았으므로 무시해라. 그래서 변형이 적용될 때 프레임은 문제가되지 않습니다. "bounds"는 항상 원래 크기를 반환합니다 –
실제로! 아,이 함수 라이브러리는 항상 잊어 버렸습니다. CGPathGetBoundingBox가 트릭이었습니다. 나는 작업 코드로 질문을 편집했다. 덕분에 많은 사람 –
또한 센터 속성은 비정상 변환으로도 작동한다고 가정한다. – Olie