2011-03-18 2 views
4

매우 간단한 작업을하는 데 많은 어려움을 겪고 있습니다. 나는 viewController와 subViewController를 가지고 있는데, 둘 다 nib에서로드 된 뷰를 가지고있다. 설명을 위해 부모보기는 1024 x 748 크기이고 하위보기는 닙에서 640 x 480입니다. 의 ViewController의 viewDidLoad에에 UIView setCenter 문제

는 그래서 같은 subViewController의보기를 추가 :

[self.view addSubview:self.subViewController.view]; 
NSLog(@"subview.frame:%@",NSStringFromCGRect(self.subViewController.view.frame)); 

로그 출력 :

subview.frame:{{0, 0}, {640, 480}} 

그런 다음, 단지 물건을 테스트하기 위해, 내가 setCenter를 사용

이 위치를 변경하려고 할을 다음과 같은 위치에서 상위보기 내의 하위보기 :

CGPoint newCenter = CGPointMake(0,0); //should stay at the same position.. 
[self.subViewController.view setCenter:newCenter]; 
NSLog(@"after changing center.subview.frame:%@",NSStringFromCGRect(self.subViewController.view.frame)); 

개 로그 출력 :

after changing center. subview.frame:{{-320, -240}, {640, 480}} 

지금 뭔가가 높으신 양반에 망쳐지고 할 수 있다는 느낌이하고 스프링 & 스트럿/크기 & 위치 옵션을 함께 할 수있는 뭔가 추측하고있다. 나는 IB에 관해서 가장 적게 이해하고있는 특징이기 때문에 이것이 유일한 것이라고 추측 할 수 있습니다.

이 문제의 원인은 무엇입니까? 여러분은 IB에서 viewcontrollers의 뷰를 설정하여 다른 viewcontrollers의 뷰와 자동으로 정렬되도록하는 방법에 대한 일반적인 팁이 있습니까? 그리고 설정 한 후에는 setCenter가 동적으로 주위를 이동시키는 올바른 방법입니까?

답변

6

당신이하고있는 일에 따라 출력이 정확합니다. 점 (0,0)이 왼쪽 상단 구석에 있습니다. 하위보기의 중심을이 값으로 설정하면 하위보기의 왼쪽 위 모서리는 실제로 (-640/2, -480/2)이됩니다.

는 왼쪽 상단 모서리를 정렬 할 수

[self.subViewController.view setCenter:CGPointMake(320.0,240.0)]; 
+0

가 좋아 내가 볼 사용합니다. 내 오해는 프레임의 원점이 왼쪽 상단과 반대 인 중심과 같다고 생각한 것 같습니다. 멍청한 실수. IB에서 뷰의 초기 중심을 설정하는 방법이 있습니까? – donalbain

+0

불쾌감을 드려 ​​죄송합니다. 나는 정직한 하느님에게 정평이없는 체크 버튼을 발견했다. x_O – donalbain

+0

거기에서 걱정하지 마라. IB에서 Attributes 창의 세 번째 탭 (눈금자 포함)은 하위 뷰의 위치와 크기를 나타냅니다. 이를 통해 프로그래밍 방식으로 중앙, 측면 또는 모서리를 정확하게 정렬 할 수 있습니다. – PengOne

0

문제가 불분명합니다. 중심을 0,0으로 설정하면 프레임 원점이 -320, -240 인 것으로 예상됩니다. 아마도 당신은 CGRect를 오해할까요? CGRect는 원점과 크기로 구성됩니다. 프레임은 CGRect입니다. 프레임, 크기 및 중심은 모두 관련되어 있으며 프레임 변경은 크기와 중심을 변경하고 변경하는 중심은 프레임을 변경합니다.