2009-01-28 51 views
5

我創建了一個使用多個控制器來顯示和控制視圖的多視圖應用程序。我遇到的問題是,當模擬器最初加載視圖時,標題部分被屏幕頂部的欄覆蓋,並且基部的工具欄未觸及屏幕底部。我使用「界面」構建器大小屬性來控制iPhone旋轉時的視圖,並且它完美地工作。在旋轉之後,所有材料都可以在橫向和縱向模式下完美地進入到位,但問題在於旋轉發生之前的初始負載。 您的想法非常感謝。 TonyUIView被狀態欄剪切直到自動旋轉

回答

3

我遇到了狀態,導航欄和標籤欄夾住視圖的問題。我通過使用Interface Builder中的Simulated Metrics功能修復了大部分功能。這樣你在IB中的佈局就會更準確地得到你實際得到的結果。

18

我在這個問題上掙扎了好幾天 - 在IB工作中沒有太多的擺弄。

最終我得到了它通過加入這一行的工作:

mainViewController.view.frame = window.screen.applicationFrame; 

到應用程序中:didFinishLaunchingWithOptions:方法。 (其中mainViewController是主UIViewController)。

+0

謝謝!手動創建我的主視圖控制器後,我一直在努力解決這個問題。控制器中的某些內容(廣告查看彈出窗口)導致視圖中的子項在廣告被解散後通過狀態欄高度進行移位。 – DPlusV 2010-08-23 06:25:06

+1

+1,因爲我浪費了兩個小時試圖找到這個答案! – 2010-11-04 04:49:53

0

的問題是,你是根據蘋果的文檔添加控制器「錯誤地」(恕我直言,雖然蘋果設計的很糟糕 - !默認的應該是你不需要轉移)

如果你會有一個狀態欄,Apple 要求,你「手動」將所有的控制器向下移動20個像素(更準確地說,是狀態欄的高度 - 儘管現在總是20個像素,但Apple允許您請求運行時高度,來自UIApplication中的「statusBarFrame」屬性)

Apple's classes - eg UINavigationController/UITabBarController - 當它們被添加到屏幕時,自動向下移動20個像素。這兩個班都有一個錯誤,他們會做這種轉變即使他們不是主要控制器 - 所以你的應用程序突然下移額外的20個像素,留下20個像素的白色空間頂部。

但是,當他們旋轉時,這些類通常「得到它的權利」,並回到原地。或相反亦然。

c.f.此鏈接,這是怎麼回事,以及如何更詳細的解釋,編寫代碼蘋果希望你的方式:我就遇到了這個問題太

http://blog.red-glasses.com/index.php/tutorials/iphone-auto-rotation-for-intermediate-developers-tutorial-1/

1

。具體來說,當顯示一個ADBannerView時,我的整個視圖會轉移並位於狀態欄下方,並留下一點空的空間,只是iPhone屏幕底部狀態欄的大小。下面是我如何解決它:(亞當斯在這裏回答讓我摸不着頭腦):

// In the function that displays an iAD Banner 
CGRect contentFrame = self.view.bounds; 
CGRect myStatusBarFrame = [[UIApplication sharedApplication] statusBarFrame]; 
CGFloat statusHeight = myStatusBarFrame.size.height; 

// Set the view's origin to be under the status bar. 

contentFrame.origin.y = statusHeight; 

我需要設置我的觀點的起源是狀態欄的下方,而解決這個問題對我來說。