2015-05-07 110 views
5

關於常規設置,我允許肖像和landscapeleft,landscaperight模式。我想關閉風景模式。在viewController我寫這個代碼:如何禁用並啓用swift自動旋轉?

override func shouldAutorotate() -> Bool { 

     return false 

} 

但是,自動旋轉工程忽略此功能。如何在swift上禁用和啓用自動旋轉? IOS編程

回答

8

它可能是正確的代碼,但不是在正確的視圖控制器。例如,如果View Controller嵌入到UINavigationController中,導航控制器仍然可以旋轉,導致View Controller仍然旋轉。這真的取決於你的具體情況。

+0

嗨喬希,是我嵌入式導航視圖控制器我的視圖控制器。那麼我應該在哪裏放這個代碼? –

+0

子類uinavigationcontroller並把它放在那裏。基本上你只需要檢查頂部的視圖控制器是否是你想旋轉的視圖控制器。 –

+0

我不明白當你說「檢查頂部的視圖控制器」我把autorotate在子類uinavigationcontroller上返回false。我自動轉換現在不起作用。那是我想要的。我把autorotate返回true後,如果我的moviewplayer開始玩。當我去全屏自動化工作。當我退出全屏時,它不起作用。我不明白這是爲什麼? –

3

我有同樣的問題,我已經修復了。

後續

信息 - >自定義IOS目標屬性 - >支持接口Orinetations。並刪除[刪除 - 景觀(左home鍵),風景(右home鍵),風景(上home鍵)]![1]

這將幫助你

1

你可以做到這一點通過創建子類UINavigationController的和內部的,覆蓋應自動旋轉功能,那麼

  • 返回false爲要在其中禁用自轉
  • 還真的要在其中自轉的viewControllers的viewControllers

    import UIKit  
    
    class CustomNavigationController: UINavigationController { 
    
    override func shouldAutorotate() -> Bool { 
        if !viewControllers.isEmpty { 
         // Check if this ViewController is the one you want to disable roration on 
         if topViewController!.isKindOfClass(ViewController) {    //ViewController is the name of the topmost viewcontroller 
    
          // If true return false to disable it 
          return false 
         } 
        } 
        // Else normal rotation enabled 
        return true 
        } 
    } 
    

如果你想在整個導航控制器禁用自動旋轉,如果條件刪除並返回false始終