我有一個視圖加載在MainWindow.xib中。它只是一個帶有全景視圖的視圖,在整個屏幕上顯示圖像(320 X 480)。當應用程序加載時我顯示此視圖,然後我做了IPhone - UIView addSubview頂部差距
[self.view addSubview:tabbarController.view];
標籤欄控制器是隻是添加到它2個視圖控制器一個的UITabBarController。當它將tabbarController的視圖添加到子視圖中時,它會在大約20px的頂部留下空隙。我的應用程序確實有一個狀態欄,但這基本上是另一個空間。除非我將此添加到我的視圖控制器,否則會發生這種情況:
self.view.frame = CGRectMake(0, 0, 320, 480);
任何人都可以解釋這一點。我在做
self.view = tabbarController.view;
但被告知我不應該那樣做。所以,現在我添加一個子視圖,但我不明白爲什麼我必須調整我的視圖的CGRect不顯示20px。
感謝您的明確解釋。也許我應該回去重組我的應用程序的一部分。我想以正確的方式做事,但我認爲將視圖控制器邏輯與應用程序委託分開可能會更好 - 所以我的根視圖控制器可以完成它所需的一切。這將解釋爲什麼在我的根視圖控制器,如果我做self.view = tabbarController.view而不是作爲子視圖添加,我不會得到的差距。很好的答案。如果可以的話,我會投更多。 – Brian
聽起來你的直覺在這裏很好。這只是Cocoa Touch中那些設計限制中的一個,我們現在必須解決。 請記住,您不一定需要將tabbarController.view添加到您的應用程序委託的窗口中。你可以將它添加到你的視圖控制器中,如果這是你認爲最有意義的地方。您只需要通過keyWindow方法訪問窗口對象,或者在applicationDidFinishLaunching:中將其設置爲控制器上的屬性。 – cduhn
但這並不意味着tabbarcontroller.view現在是window.view的子視圖? 但在我的情況下,我有一個廣告視圖,然後是第二個contentview,這是不正確的。我將tabbarcontroller.view添加到contentview。以這種方式,視圖控制器將根據廣告處理內容/廣告。如果我將tabbarcontroller.view添加到窗口,我不認爲我將能夠使用我的viewcontroller處理視圖。你怎麼看? – LolaRun