2014-12-17 3 views
0

어떤 각도에서 UIView를 추가했습니다. 이제 실행 시간에 나는 그 견해를 위로 옮기고 싶습니다 (20px).프레임을 CGAffineTransformMakeRotation보다 바꿉니 까?

dragView = [[DragbleView alloc] initWithFrame:CGRectMake(10, 200, 200, 90)]; 
dragView.transform = CGAffineTransformMakeRotation (-0.663247); 

실행 시간에 시작에서

NSLog(@"Before : %@",NSStringFromCGRect(dragView.frame)); 
[dragView setCenter:CGPointMake(dragView.frame.origin.x, dragView.center.y+20)]; 
NSLog(@"After : %@",NSStringFromCGRect(dragView.frame)); 

콘솔 O/P

Before : {{3.4947295778412979, 147.97225037436704}, {213.0105408443174, 194.05549925126593}} 
After : {{-103.0105408443174, 167.97225037436704}, {213.0105408443174, 194.05549925126593}} 

당신은 내가 볼 수 있듯이 잘못된 곳으로 간다. 20px 위에 놓는 방법

답변

1

당신이 지정한대로하고 있습니다. X와 Y의 중심점을 사용하면 더 나은 결과를 얻을 수 있습니다.

iOS는 왼쪽 상단으로 0,0을 사용하므로 "위쪽"으로 이동하려면 dragView.center.y에서 20을 빼야합니다.

+0

감사합니다 ....... – user3772344

0

위로 이동하려면 추가하는 동안 Y 위치 값을 최소화해야합니다.

이 시도 : 당신이 UIView의 프레임 속성에 문서를 읽으면

[dragView setCenter:CGPointMake(dragView.frame.origin.x, dragView.center.y - 20)]; 
3

는, 그들이 말하는 :

를 속성이 변환 신원, 이 속성의 값이 아닌 변환하는 경우 정의되어 있지 않으므로 무시해야합니다.

보기의 변형을 변경하면 프레임을 변경할 수 없습니다. 더 이상 작동하지 않습니다.

@GaryRiches가 제시 한 대답과 달리보기의 가운데 속성을 사용해야합니다.

관련 문제