2012-12-19 4 views
5

가능한 중복 :
UIViewController returns invalid frame?다른 하위 뷰 레이아웃

내가 viewDidLoad 내보기 프레임을 부르는 것으로 나타났습니다 디버깅하는 동안이 정확하지 origin=(x=0, y=20) size=(width=320, height=460)이다. viewWillAppear에서는 올바르게 설정되어 있습니다 : origin=(x=0, y=0) size=(width=320, height=416) 탐색 모음 높이를 고려하십시오. 내 하위보기 레이아웃은 루트보기에 따라 다르지만보기가 나타날 때마다 설정하지 않으려합니다.

두 가지 호출을 어떻게 처리해야합니까?

+0

이전과 똑같이 처리하십시오. 탐색 창 높이를 차지하는 것이기 때문에 -viewWillAppear에서보기를 설정 한 다음 -viewDidLoad에서 초기화를 수행하십시오. – CodaFi

답변

6

뷰 레이아웃을 처리하기위한 적절한 위치는 UIViewController viewWillLayoutSubviews 메서드입니다. 뷰 컨트롤러의 뷰가 처음 표시 될 때나 회전 할 때와 같은 크기가 될 때마다 호출됩니다.

앞에서 보았 듯이 viewDidLoad을 호출하면보기 컨트롤러의보기 크기가 아직 조정되지 않았습니다.

iOS 4.3을 지원해야하는 경우 5.0에 추가 된 이후 viewWillLayoutSubviews을 사용할 수 없습니다. 이 경우 viewWillAppear:에서 레이아웃을 수행하십시오.

+0

-viewWillAppear은 뷰 프레임이 설정되고 윈도우의 방향 지정이 끝나기 전에 호출 될 수 있습니다 (MAY). iOS 4에서 필요하다면 -viewDidAppear가 호출 될 때까지 기다려야합니다. –