2013-05-14 42 views
0

我有一個UISplitViewController ipad應用程序。它使用一個mainwindow.xib和我的子類RootView和DetailView控制器。它可以自動旋轉至5.1。ipad應用程序不會在IOS6中旋轉

我知道爲ios6更改了界面。當我將新的旋轉方法添加到我的細節和rootview類時,它仍然不旋轉。

我調用了supportedInterfaceOrientations方法,但shouldAutorotate從不調用。

有誰知道如何解決這一問題?

(總是在學習,沒有人能惹你周圍的不好的另一個程序員感謝蘋果。) 格里

+0

愚蠢的問題:你是否切換Xcode項目設置中的圖標來啓用旋轉的方向? – 2013-05-14 00:23:10

回答

1

iOS 6 release notes

自轉在iOS的6改變在iOS 6中,不建議使用UIViewControllershouldAutorotateToInterfaceOrientation:方法。取而代之,您應該使用supportedInterfaceOrientationsForWindow:shouldAutorotate方法。

更多的責任是轉向應用程序和應用程序委託。現在,iOS容器(例如UINavigationController)不會諮詢他們的孩子以確定他們是否應該自動旋轉。默認情況下,應用程序和視圖控制器支持的界面方向設置爲iPad的成語爲UIInterfaceOrientationMaskAll,iPhone成語則爲UIInterfaceOrientationMaskAllButUpsideDown

視圖控制器支持的界面方向可以隨時間變化 - 即使應用程序支持的界面方向可能隨時間而改變。無論何時設備旋轉或每當視圖控制器呈現全屏模式演示風格時,系統都會詢問其支持的接口方向的最頂級全屏視圖控制器(通常是根視圖控制器)。此外,只有當此視圖控制器從其方法返回YES時,纔會檢索支持的方向。系統將視圖控制器支持的方向與應用支持的方向(由Info.plist文件或應用代理的application:supportedInterfaceOrientationsForWindow:方法確定)相交以確定是否旋轉。

系統通過將應用程序的supportedInterfaceOrientationsForWindow:方法返回的值與最頂級全屏控制器的supportedInterfaceOrientations方法返回的值相交來確定是否支持方向。

setStatusBarOrientation:animated:方法不完全棄用。它現在只在最頂級全屏視圖控制器的supportedInterfaceOrientations方法返回0時起作用。這使得調用者負責確保狀態欄方向一致。

我知道這是一個拗口,但你可能還需要在項目的設置,查看支持的接口方向片:

enter image description here

+0

感謝您的幫助。真正的問題是:我的代碼包含[window addSubview:spliteViewController.view];在didFinishLaunchingWithOptions方法中。將其更改爲window.rootViewController = self.splitViewController;解決了這個問題。 – Gerry 2013-05-14 20:58:20

+0

啊,gotchya。所以,聽起來像有一些視圖控制器的具體東西,可能沒有被調用。 – Aaron 2013-05-14 21:06:21

0

嘗試建立一個通知時,方向改變。

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(orientationChanged:) 
              name:UIDeviceOrientationDidChangeNotification 
              object:nil]; 

然後實現orientationChanged函數內的旋轉。

- (void)orientationChanged:(NSNotification *)notification {} 
相關問題