這是視角控制器,而不是模式顯示,因此爲全屏。iOS 7狀態和導航欄故事板中的高度不同於應用程序
在故事板中,「頂部佈局指南」位於y:64
。這是我期望的狀態欄是height:20
和導航欄是height:44
。
但是,當應用程序運行時,「頂部佈局指南」是y:52
。我不知道如何或爲何失去12分。
這是視角控制器,而不是模式顯示,因此爲全屏。iOS 7狀態和導航欄故事板中的高度不同於應用程序
在故事板中,「頂部佈局指南」位於y:64
。這是我期望的狀態欄是height:20
和導航欄是height:44
。
但是,當應用程序運行時,「頂部佈局指南」是y:52
。我不知道如何或爲何失去12分。
當您使用插入導航欄的Apple導航控制器時,它將根據您的方向有不同的高度。例如,導航欄是縱向44點,橫向32點。在你的情況下,我猜你的應用程序運行時,它在橫向,因此「頂部佈局指南」是y:52(32 + 20)。
看到這個相關的帖子:NavigationBar with rotation.
一般,你不能肯定,在故事板(或筆尖)對象的幾何形狀將是最終的屏幕幾何形狀。最終的屏幕上的幾何圖形不僅取決於設備的方向,還取決於屏幕尺寸(例如,3.5英寸與4英寸的iPhone)。
不幸的是,很容易想不到。例如,如果故事板以縱向模擬4英寸iPhone,並在縱向模式下在4英寸模擬器中運行應用程序,則最終屏幕上的幾何圖形將與故事板中的相同。
爲了模擬不同的方向或屏幕尺寸故事板,請訪問視圖控制器的屬性檢查器:
如果您使用的Xcode 5,另外還有IB畫布上的「浮動」按鈕右下角可讓您快速更改模擬的形狀因子。
如果你想監視這些導航欄高度的變化,例如像這樣:
-(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;
}
嗯,這是有道理的,但奇怪的是,Interface Builder中不正確模擬這一點。我如何向蘋果提交一個錯誤,以便他們查看它? – Brenden
還沒有嘗試向Apple提交報告,但您可以從這裏開始https://developer.apple.com/bug-reporting/ – zinc1oxide