2016-02-02 31 views
0

我正在用IB製作我的UI。我的視圖控制器在IB中看起來如下所示。 enter image description here enter image description here用20像素高度的UILayoutGuide

我設置視圖控制器的背景色爲黃色,子視圖的紅色。然後我設置約束條件,讓子視圖的4條邊對齊到它的超級視圖---視圖控制器的視圖。但我真正看到的是如下。 enter image description here

我打印出視圖控制器視圖的子視圖,發現有一個'UILayoutGuide'(頂部,我猜),高度爲20像素。這是否是紅色子視圖沒有將其頂部對準超級視圖的原因?

這裏是我添加到紅色子視圖的約束。 enter image description here

其他條件:我沒有設置狀態欄隱藏。但是,如果我將狀態欄設置爲隱藏([UIApplication sharedApplication].statusBarHidden = YES),則紅色子視圖的佈局將會正確(我的意思是,將其4個邊對齊到超級視圖,以便看不到黃色背景色)。如下所示。 enter image description here

有什麼建議嗎?謝謝。

回答

0

我偶然發現了answer

實際上我正在實現UINavigationController。我將默認導航欄設置爲隱藏。如文檔所述

狀態欄底部,如果只有狀態欄可見。

所以在視圖控制器視圖的頂部會有一個20px的空間。而且,由於佈局指南是隻讀的,因此我無法通過在子視圖的頂部到頂部佈局指南的底部之間設置垂直空間來將紅色子視圖的頂部對準其超級視圖(我的視圖控制器的視圖)。

但是,這是我的解決方法。我將超視圖之間的前導,尾隨,底部空間設置爲0.0px,並將子視圖的高度設置爲超級視圖的高度。現在,即使當我將狀態欄設置爲可見時,紅色子視圖的頂部與其超級視圖之間也沒有空間。 enter image description here