2017-03-08 5 views
2

J'étais searching que comment puis-je changer le orientation en mode LandScape uniquement pour spefic view controller lorsque le Device Orientation est réglé sur Portrait dans le projet settings. N'a pas eu de résultat positif. donc finalement j'ai trouvé un moyen de le faire.Changer l'orientation uniquement pour les contrôleurs de vue spécifiques ios rapides 2.3 et rapides 3

c'est l'orientation de l'appareil projet ressemble ....

enter image description here

Dans rapide 2.3 ajouter des méthodes suivantes

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

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


    override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation { 
     return UIInterfaceOrientation.LandscapeLeft 
    } 

Pour 3.0 rapidement faire comme ci-dessous ....

override var shouldAutorotate: Bool { 
     return false 
    } 

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask { 
     return .landscapeLeft 
    } 

    override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation { 
     return .landscapeLeft 
    } 

Remarque: Cela fonctionnera correctement si vous naviguez d'une vue à une autre vue sans contrôleur de navigation.

pour plus voir ce petit tutoriel vidéo: change device orientation for specific view controller in ios

si quelqu'un a une meilleure façon de le faire ou commentaires, espérons que votre réponse ou commentaires ici. merci.

+1

Outre la réponse - Même si vous modalement présent avec un style de transition personnalisé, le changement d'orientation de mise en page ne fonctionnera pas. –

Répondre

1

Utilisez supportedInterfaceOrientationsFor l'application delegate.add code suivant dans fichier AppDelegate

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

      if isIpadLandscape { 
       return UIInterfaceOrientationMask.all; 
      }else{ 
       return UIInterfaceOrientationMask.portrait; 

      } 


    } 


Add particular **viewcontroller** page you want to **rotate** 

    override func viewDidLoad() { 
      super.viewDidLoad() 
      isLandscape = true 
    } 
    override func viewWillDisappear(_ animated: Bool) { 
      isLandscape = false 
     } 

Et ne pas oublier d'ajouter varibale globale dans le fichier appdelegate

import UIKit 
import CoreData 
import Foundation 
    var isLandscape = false 
    @UIApplicationMain