2012-10-10 55 views
1

這個應用程序在橫向iOS5中工作得很好。但是在iOS6中,它開始在所有視圖控制器中使用縱向方向。 shouldAutorotateToInterfaceOrientation方法不再被調用。我讀了new stuff about changed rotation mechanism in iOS6和我能夠解決這個問題通過增加線在我的AppDelegate:iOS6:我們是否必須在App委託中設置rootViewController以支持不同的方向?

self.window.rootViewController = _viewController 

_viewControler是開始屏幕(主頁菜單)。所有其他視圖控制器都實現shouldAutorotateToInterfaceOrientation方法,並僅對橫向方向返回YES。所以,它是完全適用於需要僅支持一個方向的應用程序的解決方案。

但是,問題是我需要一個視圖控制器(讓我們稱之爲手機-VC)以縱向方向呈現。現在,如果我希望這個視圖控制器將被旋轉,那麼我需要在分配給appDelegate中的rootViewControler的主菜單控制器中返回YES。但是,我不能這樣做,因爲這個rootViewController是開始窗口,只需要在橫向上顯示,否則在此窗口中的圖形佈局將中斷。但是如果我不從其shouldAutorotateToInterfaceOrientation(Home-menu)返回YES,那麼我的視圖phone-VC中不會調用相同的方法,而是需要以縱向方式呈現。

任何想法? AppDelegate中是否必須分配rootViewController?

UPDATE:設備上存在問題(至少在iPhone4上)。

+0

你在真的設備上還是在模擬器上有旋轉問題?我注意到模擬器的旋轉在一個真實的設備上是不同的。 – rckoenes

+0

選中此... http://stackoverflow.com/questions/11544382/ios-6-screen-rotation-without-using-storyboard http://stackoverflow.com/questions/12775265/IOS -6- shouldautorotate-是-非存在所謂 – user1662392

回答

1

是的,從iOS 6.0開始,您必須將rootviewcontroller分配給Windows.rootViewController。該控制器將決定他們的孩子是否旋轉。默認情況下,所有方向都受支持,但您可以通過實現shouldAutoRotate和supportedInterfaceOrientations委託方法來限制它們。我有一個實例,我沒有使用將視圖控制器作爲子視圖添加到窗口的MGSplitViewController分配給Windows的rootviewcontroller。我只需要改變它,使rootviewcontroller和所有工作正常!

檢查UIKit有關Apple文檔的部分 - iOS 6.0發行說明。

相關問題