2015-10-30 1 views
3

J'ai 10 contrôleurs de vue dans mon application et je veux seulement un contrôleur de vue à voir en mode portrait et paysage et le reste ne devrait être visualisé en mode portrait. Note: J'utilise UINavigationController. Toute aide est appréciée!Activer le portrait et le paysage pour un contrôleur de vue et uniquement le portrait pour les autres contrôleurs de vue dans swift?

+1

possible en double http://stackoverflow.com/questions/26357162/ how-to-force-view-contrôleur-orientation-in-ios-8 –

+1

@Gagan_iOS aucun d'entre eux ne fonctionne, je veux la solution pour iOS 9, les solutions qui sont présentes dans le lien que vous avez posté ne fonctionnent pas pour iOS 9 . –

Répondre

1

J'ai eu le même problème, mais a trouvé une solution:

D'abord, autoriser le mode paysage pour votre application dans les paramètres de base. Ensuite, modifier votre AppDelegate:

internal var shouldRotate = false 

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { 

    return shouldRotate ? .allButUpsideDown : .portrait 

} 

Pour chaque contrôleur, où le mode paysage devrait être autorisé, ajoutez le code suivant à la viewDidLoad():

let appDelegate = UIApplication.shared.delegate as! AppDelegate 
appDelegate.shouldRotate = true 

qui permet toute l'application à afficher dans mode paysage. Mais il devrait être seulement dans ce contrôleur, il faut donc ajouter le code suivant dans viewWillDissappear() pour définir le shouldRotate var dans le AppDelegate false:

override func viewWillDisappear(_ animated: Bool) { 
    super.viewWillDisappear(true) 

    let appDelegate = UIApplication.shared.delegate as! AppDelegate 
    appDelegate.shouldRotate = false 

}