2017-07-28 32 views
1

我正在開發一個iOS應用程序,允許某人玩兩種不同的遊戲中的一種。如何將用戶界面方向應用到iOS故事板場景

兩場比賽都是在一輪比賽中進行。當玩家完成一輪時,應用程序轉換到顯示結果的新場景,然後轉換到另一輪場景或結束遊戲場景。

由於應用程序中場景的瞬時特性,因此在更傳統的應用程序中保持場景是沒有意義的,在這種應用程序中某些人可以返回到前一個場景。

爲此,大多數場景漫遊是通過使用UINavigationViewController和簡單的調用setViewControllers(animated:)僅提供包含UIViewController下一個場景中的陣列來完成,而這工作得很好。

我提到應用程序將允許某人玩兩個遊戲之一。事實證明,在iPhone上,一個遊戲最好以縱向模式播放,另一個遊戲最好以橫向模式播放。我希望能夠控制在某個特定的UIViewController處於活動狀態時使用的用戶界面方向。

我已經嘗試使用UINavigationControllerapplication(_ application: supportedInterfaceOrientationsFor window:)UIApplicationDelegatesupportedInterfaceOrientations財產,並已能夠把事情爲標準的應用程序。但是,當我嘗試使用setViewControllers(animated:)來應用我的遊戲應用程序的工作方式時,沒有涉及應用所需用戶界面方向的方法似乎被調用,並且所有場景都顯示爲相同的方向。

對於我如何在應用程序中使用特定用戶界面方向顯示場景,人們有什麼建議?

回答

0

嘗試使您呈現視圖控制器調用它的觀點,下面的方法會出現,或查看並顯示:

class func attemptRotationToDeviceOrientation() 

有些視圖控制器可能需要使用應用程序特定的條件 確定什麼接口支持方向。如果您的視圖 控制器執行此操作,那麼當這些條件發生變化時,您的應用程序應該調用此類方法 。系統立即嘗試旋轉至 新的方向。

https://developer.apple.com/documentation/uikit/uiviewcontroller/1621400-attemptrotationtodeviceorientati

+0

這很有趣。我添加了一個對UIViewController的調用。每個視圖控制器的viewDidAppear方法中的attemptRotationToDeviceOrientation。事實證明,每當發生這種情況時,每個視圖控制器的supportedInterfaceOrientations屬性都是訪問權限。每個需要特殊方向的視圖控制器都會返回所需的方向,但看起來沒有效果。這些觀點仍然以相同的方向出現。 –

+0

如果將UINavigationController從僅使用setViewControllers(,animated:true)更改爲使用空的UIViewController數組調用setViewControllers(,animated:true),然後調用pushViewController(,animated:true),那麼supportedInterfaceOrientations屬性僅獲取訪問權限: 。這種動畫效果不佳,使用它並不能最終解決問題 –