2017-03-08 5 views
2

Ich war searching, dass, wie kann ich den orientation-LandScape Modus ändere nur für spefic view controller wenn die Device Orientation zu Portrait im Projekt settings gesetzt. Hat kein erfolgreiches Ergebnis erzielt. So habe ich endlich einen Weg gefunden, es zu tun.die Ausrichtung ändern 3

dieses Projekt Geräteausrichtung wie folgt aussieht ....

enter image description here

In swift 2.3 Add folgenden Methoden

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

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


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

Für swift 3.0 wie unten tun ....

override var shouldAutorotate: Bool { 
     return false 
    } 

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask { 
     return .landscapeLeft 
    } 

    override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation { 
     return .landscapeLeft 
    } 

Hinweis: Dies funktioniert einwandfrei, wenn Sie von einer Ansicht zu einer anderen Ansichtssteuerung ohne Navigationssteuerung navigieren.

für mehr dieses kleine Video-Tutorial sehen: change device orientation for specific view controller in ios

wenn jemand eine bessere Art und Weise hat dies oder Kommentare zu tun, hoffen, dass Ihre Antwort oder hier Kommentare. Danke.

+1

zusätzlich zur Antwort hinzufügen - Auch wenn Sie Modal mit einigen benutzerdefinierten Übergangsstil, Layout-Ausrichtung Änderung funktioniert nicht. –

Antwort

1

Verwenden supportedInterfaceOrientationsFor Anwendung delegate.add folgenden Code in AppDelegate Datei

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 
     } 

Und vergessen Sie nicht, globale Varibale in AppDelegate Datei

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