的子視圖我想在一個UINavigationController的頂部顯示一個UILabel。問題是,當我添加的UILabel作爲一個UIWindow的子視圖不會自動旋轉,因爲它不是UIViewController中的一個子視圖(UIViewController的自動處理旋轉期間更新子視圖)。添加一個UINavigationController作爲UIView的
這是我用的是層次結構:
- 的UIWindow
- 的UILabel
- 的UINavigationController
所以我想我可以使用下面的層級:
- 的UIWindow
- 的UIViewController
- 的UIView
- 的UILabel
- 的UINavigationController
- 的UIView
- 的UIViewController
這樣,標籤可以顯示在UINavigationController的頂部,同時也可以自動旋轉,因爲它是UIViewController的子視圖。
的問題是,當我嘗試添加一個UINavigationController的視圖的子視圖:
[myViewController.view addSubview:myNavigationController.view];
會出現20個像素向下。我猜測是因爲它認爲它需要爲狀態欄騰出空間。但是,由於UINavigationController被放置在UIView中,它不會疊加在狀態欄的頂部,因此不正確地添加了20個像素。換句話說,UINavigationBar的頂部是屏幕的40像素標記,而不是20像素。
是否有任何簡單的方法來只是移位的UINavigationController及其所有元件(例如導航欄,工具欄,根視圖控制器)最多20個像素?或者讓它知道它不應該補償狀態欄?
如果不是這樣,我想我需要用我上面提到的第一個層次,並找出如何使它與導航欄的旋轉一致旋轉的標籤。我在哪裏可以找到更多關於如何做到這一點的信息?
注:通過「導航欄的頂部顯示一個標籤」,我的意思是它應該覆蓋在導航欄的頂部...它不能簡單地包裹在欄按鈕項目,並放置爲一體導航欄的項目。
使用 nav.view.frame = CGRectMake(0,0,self.view.frame.size.width,自.view.frame.size.height); \t 使這也適用於ipad,它沒有+20的錯誤,但有其他問題的寬度和高度,而不是整體這是一個總的缸,很馬虎的蘋果 – valexa
我有一個實例,如果我加載一個UINavigationController在iPad上以橫向模式查看子視圖我確實得到了20像素的錯誤。但只是第一次。我可以在以後重新添加到超級視圖,問題將消失。非常非常令人沮喪。 –
看來我有同樣的問題。沒有什麼可以告訴我導航欄的垂直偏移量是20像素。 @DanielWood我真的分享你的挫敗感。如果我推,然後彈出另一個控制器,一切都好,但第一次...我嘗試你的遊戲。 – Vaseltior