1

경계 대 프레임에서 일부 게시물을 체크 아웃했지만 여전히 약간 혼란 스럽습니다.UITabBarController, UINavigationController 및 자식 UIViewController의 경계가 다릅니다

나는 다음과 같은 계층 구조를 가지고 : UITabBarController가>은 UINavigationController> UIViewController에 나는 다음과 같은 NSLog

NSLog(@"%f %f %f",[[[self tabBarController] view] bounds].size.height, [[[self navigationController] view] bounds].size.height, [[self view] bounds].size.height); 

나는 다음과 같은 출력 얻을 시도

:

480.000000 431.000000 460.000000 

내가 20 차이를 이해를 상태 표시 줄 높이에 대한 계정,하지만 UIViewController 바인딩 상태 표시 줄 높이를 제외하는 이유를 이해하지 않지만 은 UINavigationController 및 UITabBarController가이

상단 tabBarController가 480.0의 높이를 (왜 20pt의 상태 표시 줄의 높이를 배제하지 않는다 ???)가 않습니다 왜 내 질문에

1) 정제 ... 등이 있습니다. 좋아, 높이가 항상 상태 표시 줄 높이를 제외하지 않고 지금 이동한다고 가정합시다.

2) UINavigationController의 높이는 431.0입니다 (좋아, 합리적인 추측은 480-49이고 49는 탭 바의 높이). 하지만 탭 바 높이를 제외하고 상태 표시 줄의 높이를 제외하는 이유는 무엇입니까 ??? 애플의 View Programming Guide는 그걸 설명하지는 않지만 ... 계속 진행해 보겠습니다.

3) 왜 UIViewController의 높이가 460입니까?

(3a) 왜 UITabBarController 및 UINavigationController와 달리 상태 표시 줄의 20pt 높이를 제외합니까?

(3B) 더 중요한 이유는 네비게이션 바의 높이를 배제하지 않는다 (즉, 왜해야하지가 될 431-44 = 387?!)

(3C) 왜 내의 UIViewController을 수행하는 인사이드 내 UINavigationController는 길이가 더 깁니다. UINavigationController보다 높이가입니까?

+0

UIViewController에 대한 Apple 가이드 읽기 - 이 견해들 어울리다. –

+0

@DavidH - 무식하게해서 죄송합니다. UIViewController 클래스 및 View Controller Programming Guide에서 Apple의 설명서를 iOS 용으로 확인했지만 거의 경계를 언급하지 않았습니다. – minovsky

+0

'View Programming Guide'. –

답변

0

좀더 알아 낸 것 ... viewDidLoad에 NSLog를 넣었습니다. viewDidAppear로 이동하면 UIViewController의 높이가 예상대로 367 (= 480-20-44-49)이었고 그 원점은 (0, 64), 상태 표시 줄의 20pt와 navbar의 44pt를 차지합니다. origin.y가 0이고 높이가 480.0인데도 프레임을 인쇄 할 때

및 UINavigationController의 경우 그것의 네비게이션 바로 navbar는 origin.y가 20이므로, 기본적으로 UINavigationController의 프레임은 여전히 ​​전체 화면에 있지만 최상위 20pt (상태 표시 줄이 비어 있음)는 비어 있습니다.

+0

원점을 의미합니다. "y", 맞습니까? –

+0

당신 말이 맞아요 ... 편집했습니다. 그것을 지적 주셔서 감사합니다 !! – minovsky

관련 문제