2013-06-12 21 views
1

我注意到用iPhone上的NavigationController,高度是460.所以它包括除狀態欄以外的整個屏幕。UIViewController的視圖座標系在導航欄後如何啓動,但其高度包含導航欄?

但是,當我在座標0處添加一些東西時,它顯示在NavigationBar後面,雖然導航欄的大小包含在高度(意味着此視圖的整個框架伸出屏幕)。

我犯了一個錯誤嗎?如果沒有,爲什麼這樣構造?

NSLog(@"Frame: %@", [NSValue valueWithCGRect: self.view.frame]); // prints {(0, 20), (320, 460)} 
UIScrollView* scrollView = [[UIScrollView alloc] initWithFrame: CGRectMake(0, self.navigationController.navigationBar.frame.size.height, self.view.frame.width, 50)]; 
[self.view addSubview: scrollView]; // showing up 44px *after* the nav bar 
+0

要獲得框架您可以使用'NSLog(@「%@」,NSStringFromCGRect(self.view.frame));' –

+0

@ LithuT.V哈哈感謝好多日誌做的時候 – Raekye

回答

0

我已經回答了您的其他類似問題,但這裏是一個。

viewDidLoad中,您將看到視圖高度爲460,因爲此時它沒有調整爲導航欄的大小。

但是,如果您在說viewWillAppear中打印出相同的框架,則會看到現在框​​架高度已針對導航欄進行了調整。

所以如果你想添加一些東西在viewDidLoad,你需要添加它基於視圖框架,添加任何調整大小掩碼將做你想要的工作,並看到它調整正確後,視圖出現。

+0

哈哈耶我只是關於關閉/自己回答這個問題。再次感謝 - 對於閱讀此內容的任何人,這裏是其他問題的鏈接(關於自動調整口罩,但具有相同的答案):http://stackoverflow.com/questions/17058038/ – Raekye