一千萬個為什麽

搜索

UIScreen applicationFrame在橫向應用程序啟動時返回錯誤的矩形(iPhone/iPad)


在橫向模式下啟動時,無法為我的iPad應用程序獲取正確的界限。我在Info.plist文件中設置了正確的鍵,我的視圖控制器在橫向(和肖像,自然)中正確啟動。

In my applicationDidFinishLaunching: method I'm calling a selector after a 3 second delay, and that method makes a call to [[UIScreen mainScreen] applicationFrame], but it's returning me a portrait frame (ie height > width).

有誰知道如何解決這一問題?它聞起來像是一個臭蟲(如果是這樣我將提交雷達),但如果它是預期的行為,它在哪裏記錄?

最佳答案

我從不依賴 [[UIScreen mainScreen] applicationFrame] ,尤其是在應用程序啟動期間。

在代碼中創建視圖時,使用superview設置框架。

如果你使用帶有“模擬界面元素”的xib,它們的大小將正確,一切都會很好。

基於UINavigationController的應用

對於基於UINavigationController的應用程序,直接從 self.navigationController.view 獲取框架,不要嘗試使用 [self loadView]self。 view.superview </代碼>。 UINavigationController使用“隱藏”子視圖來完成它的工作 - 因此直接超級視圖將無法工作。

UINavigationController很特別,因為在應用程序啟動期間,導航控制器會在調用 loadView 之後調整視圖大小。在自動調整踢的時候,你最終會在屏幕底部留下一小段距離。

為什麽不使用UIScreen

[[UIScreen mainScreen] applicationFrame] doesn't work reliably (especially during app launch in landscape). My experience is that the viewcontroller's interfaceOrientation property will not match the applicationFrame orientation.

轉載註明原文: UIScreen applicationFrame在橫向應用程序啟動時返回錯誤的矩形(iPhone/iPad)

猜你喜歡