2013-11-21 69 views
4

這是視角控制器,而不是模式顯示,因此爲全屏。iOS 7狀態和導航欄故事板中的高度不同於應用程序

在故事板中,「頂部佈局指南」位於y:64。這是我期望的狀態欄是height:20和導航欄是height:44

但是,當應用程序運行時,「頂部佈局指南」是y:52。我不知道如何或爲何失去12分。

回答

9

當您使用插入導航欄的Apple導航控制器時,它將根據您的方向有不同的高度。例如,導航欄是縱向44點,橫向32點。在你的情況下,我猜你的應用程序運行時,它在橫向,因此「頂部佈局指南」是y:52(32 + 20)。

看到這個相關的帖子:NavigationBar with rotation.

+0

嗯,這是有道理的,但奇怪的是,Interface Builder中不正確模擬這一點。我如何向蘋果提交一個錯誤,以便他們查看它? – Brenden

+0

還沒有嘗試向Apple提交報告,但您可以從這裏開始https://developer.apple.com/bug-reporting/ – zinc1oxide

0

一般,你不能肯定,在故事板(或筆尖)對象的幾何形狀將是最終的屏幕幾何形狀。最終的屏幕上的幾何圖形不僅取決於設備的方向,還取決於屏幕尺寸(例如,3.5英寸與4英寸的iPhone)。

不幸的是,很容易想不到。例如,如果故事板以縱向模擬4英寸iPhone,並在縱向模式下在4英寸模擬器中運行應用程序,則最終屏幕上的幾何圖形將與故事板中的相同。

爲了模擬不同的方向或屏幕尺寸故事板,請訪問視圖控制器的屬性檢查器:

enter image description here

如果您使用的Xcode 5,另外還有IB畫布上的「浮動」按鈕右下角可讓您快速更改模擬的形狀因子。

enter image description here

4

如果你想監視這些導航欄高度的變化,例如像這樣:

-(void) viewDidLayoutSubviews 
{ 
    [super viewDidLayoutSubviews]; 
    CGFloat navBarHeight = self.navigationController.navigationBar.frame.size.height; 
} 

你會意識到,儘管應用改變方向爲橫向模式,navBarHeight的價值仍然是舊的(44)。 爲了解決這個問題,而不是用固有大小:

-(void) viewDidLayoutSubviews 
    { 
     [super viewDidLayoutSubviews]; 
     CGFloat navBarHeight = self.navigationController.navigationBar.intrinsicContentSize.height; 
    } 
相關問題