UIView
안에 몇 가지 UIButton
개의 인스턴스가 있고, 차례로 해당 애플리케이션의 UIView
내에 있습니다. 내가 얻으려고하는 것은 윈도우에 상대적인 버튼 프레임 중 하나의 CGRect
입니다.창에 상대적인 UIView의 경계 가져 오기?
예를 들어 내보기가 기본보기와 관련하여 50, 50
인 경우 버튼은 안에 있으며 60, 60
을 반환하고 싶습니다.
부모보기를 추적하지 않고 추가하는 등의 쉬운 방법이 있나요?
UIView
안에 몇 가지 UIButton
개의 인스턴스가 있고, 차례로 해당 애플리케이션의 UIView
내에 있습니다. 내가 얻으려고하는 것은 윈도우에 상대적인 버튼 프레임 중 하나의 CGRect
입니다.창에 상대적인 UIView의 경계 가져 오기?
예를 들어 내보기가 기본보기와 관련하여 50, 50
인 경우 버튼은 안에 있으며 60, 60
을 반환하고 싶습니다.
부모보기를 추적하지 않고 추가하는 등의 쉬운 방법이 있나요?
UIView *parent = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 50, 50)];
UIView *child = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 10, 10)];
[parent addSubview:child];
[self.view addSubview:parent];
NSLog(NSStringFromCGRect([self.view convertRect:child.frame fromView:child.superview]));
결과 :
{{60, 60}, {10, 10}}
아래 기능을 사용하십시오.
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view;
CGPoint pt = [button convertPoint:CGPointMake(button.frame.origin.x, button.frame.origin.y) toView:yourWindow];
당신은 -[UIView convertRect:toView]
및 -[UIView convertRect:fromView:]
을 사용하여 다른 뷰의 좌표 시스템에 구형 영역을 변환 할 수 있습니다.
UIView *outerView = self.navigationController.view;
UIView *innerView = self.myButton;
CGRect buttonRect = [self.view convertRect:self.innerView.frame toView:outerView];
또한 convertPoint:
방법 동등한 있습니다 : 당신이 당신의 가장 바깥 쪽 볼에 대한 참조가있는 경우
그래서, (당신이 탐색 컨트롤러를 사용하는 경우, 아마도, 그 최보기를 할 수 있습니다). 그렇다면 실제로 변환 할보기를 만드는 경우입니다. 로그
이것은 정말 이상한 결과를주고 있습니다. 문제의 버튼은 수퍼 뷰에서'{162, 0}'에 있고 수퍼 뷰는 기본 뷰에서'{0, 355} '에 있습니다. 그러나, 그것은'{324, 291}'을'convertRect'의 출력으로 사용하고 있습니다. 왜 이것이 될 수 있을까요? – Luke
흠, 그건 이상합니다. 올바른 수퍼 뷰를'convertRect' /'convertPoint'에 전달하고 있습니까? –
내가 아는 한, 그렇습니다. 그것은 메인 뷰 안의 버튼 뷰 내부에 있으며'CGPoint centerOfButtonInSuperview = [button convertPoint : button.center toView : self.view];를 호출합니다. – Luke
- (CGRect) convertRect (CGRect) RECT의 toView (UIView의 *) 도면; - (CGRect) convertRect : (CGRect) rect fromView : (UIView *)보기; – Mattias
감사합니다. 어떻게 사용하겠습니까? – Luke