2011-12-17 1 views
-2

UIView의 회전 프레임 전 : - (123.46 326.855; 214.773 149.148);CGAffineTransformMakeRotation은 UIView의 높이와 너비를 변경합니다.

UIView의 회전 프레임 후 : - (109.585 304.877; 242.524 193.104);

나는 다음과 같은 코드를 사용 : -

CGAffineTransform landscapeTransform; 
    landscapeTransform = CGAffineTransformMakeRotation(rotate); 
    [contentView setTransform:landscapeTransform]; 

이 도와주세요. 감사합니다.

+0

위의 코드에서 'rotate'값은 무엇입니까? – jrturton

+0

그 변화 때마다 자사의 고정 – Leena

답변

0

저는보기를 90도 회전하려고하고 90 또는 -90을 변환 함수로 전달했다고 추측합니다.

값은 각도가 아닌 라디안이어야합니다. 변환에 사용할 수있는 상수가 있습니다. M_PI은 pi (180도)를, M_PI_2은 pi/2 (90도)를 제공합니다.

뷰의 프레임은 모든 어파인 변환의 영향을받습니다. 프레임은 수퍼 뷰의 좌표계로 표현되므로 항상이를 반영하도록 변경됩니다. 경계 사각형은 원래 크기와 동일하게 유지됩니다.

보기를 90도 회전하면 프레임 높이가 프레임 폭이되고 그 반대의 경우도 마찬가지입니다.

+0

난 라디안으로 전달 또한 높이와 너비가 변경되고있다 – Leena

+0

추측 죄송합니다! 내 대답을 업데이트했습니다. – jrturton

4

서브 뷰의 프레임은 서브 뷰 (변환이 적용된 상태)가 들어있는 가장 작은 사각형 (수퍼 뷰의 경계 좌표)입니다. 따라서 변환에 의해 영향을받습니다.

UIView *parent = [UIView new]; 
parent.bounds = CGRectMake(0, 0, 100, 100); 

UIView *child = [UIView new]; 
child.bounds = CGRectMake(0, 0, 10, 10); 
child.center = CGPointZero; 
    // at this point child.frame == { -5, -5, 10, 10 } 

child.transform = CGAffineTransformMakeRotation(M_PI_4); 
    // at this point child.frame == { -5 * sqrt(2), -5 * sqrt(2), 
    //        10 * sqrt(2), 10 * sqrt(2) }