2016-11-18 3 views
0

私はいくつかのView Controllerを持つアプリを持っています。ほとんどのアプリはオリエンテーションを持つことができますが、1つはPortraitにする必要があります。しかし、このアプリは、私がsupportedInterfaceOrientations()から返された値を無視しアプリケーションはsupportedInterfaceOrientationsを無視します

マイコード:

私は風景互換ビューコントローラにいるよと肖像画であることを想定しているものに行く
UINavigationController subclass: 

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
    if let topViewController = self.topViewController { 
     return topViewController.supportedInterfaceOrientations() 
    } 

    return [.Landscape, .Portrait] 
} 

override func shouldAutorotate() -> Bool { 
    if let topViewController = self.topViewController { 
     return topViewController.shouldAutorotate() 
    } 

    return true 
} 


UIViewController subclass 

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
    return .Portrait 
} 

override func shouldAutorotate() -> Bool { 
    return true 
} 

何も起こりません - アプリはポートレートに自動回転しません。

サポートされているインターフェイスの向きもinfo.plistから削除しました。何か案は?

答えて

1

あなたはこの機能

func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow) -> Int { 

    return checkOrientationForVC(self.window?.rootViewController?) 

} 

内、AppDelegate.swiftでそれらを設定することができ、この関数の内部で、あなたのような何かを行うことができます。

func checkOrientationForVC(viewController:UIViewController?)-> Int{ 

    if(viewController == nil){ 

     return Int(UIInterfaceOrientationMask.All.rawValue)//All means all orientation 

    }else if (viewController is SignInViewController){ //Your View controller here 

     return Int(UIInterfaceOrientationMask.Portrait.rawValue) 

    }else{ 

     return checkOrientationForVC(viewController!.presentedViewController?) 
    } 
} 

あまりにも「模擬メトリック」の下のストーリーボードでも設定オリエンテーション"オリエンテーション"。あなたはこれを見ることもできます。Stackoverflow's post.

+0

ちょっとした助けになりましたが、それだけではありません。私が望むビューコントローラに切り替えると、それはまだランドスケープですが、デバイスを回転させると、ポートレートはロックされます。 shouldAutorotate()はビューコントローラとナビゲーションコントローラの両方でtrueを返します。 –

関連する問題