2016-05-15 45 views
5

Sono un novizio in Swift e ho un problema a bloccare l'orientamento in verticale in un viewController. In realtà ho bloccato utilizzando questo codice nel mio Tutto personalizzato Navigation Controllerorientamento blocco di una vistaController in swift

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
    if (self.visibleViewController is ViewController) 
    { 
     return UIInterfaceOrientationMask.Portrait 
    } 
    return .All 
} 

funziona bene e il ViewController è bloccato per problemi portrait.The è quando ritorno a questo controller da un altro in modalità orizzontale. se ritorno a ViewController (premendo indietro dal NextViewController) in orizzontale, quindi ViewController è apparso in orizzontale. Qualche suggerimento?

+0

http://stackoverflow.com/a/20987296/1959140 In attesa, cambiare l'orientamento. –

risposta

0

È possibile ignorare i metodi indicati

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

Poi, nel vostro viewDidLoad, forzare l'orientamento aggiungendo il codice qui sotto

UIDevice.currentDevice().setValue(UIInterfaceOrientation.Portrait.rawValue, forKey: "orientation") 
+0

grazie per la tua risposta. Il codice mancante era UIDevice.currentDevice(). SetValue (UIInterfaceOrientation.Portrait.rawValue, forKey: "orientation") ma funziona meglio su viewWillAppear. –

0

Per swift3.0

Per limitare diversi orientamenti per visualizzazioni diverse È necessario eseguire le seguenti operazioni:

I n App delegato File:

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

     if self.window?.rootViewController?.presentedViewController is OtherViewController { 

      return UIInterfaceOrientationMask.All; 

     } else { 
      return UIInterfaceOrientationMask.Portrait; 
     } 

    } 
5

a Swift 3 questa soluzione funziona

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { 
    if self.window?.rootViewController?.presentedViewController is LockedViewController { 
     return UIInterfaceOrientationMask.portrait 
    } else { 
     return UIInterfaceOrientationMask.all 
    } 
} 

Change LockedViewController per abbinare il controller che vorresti bloccato.

+0

Funziona per me. Grazie mille :) –

+0

Wow. Questo era esattamente quello che stavo cercando. Grazie mille per aver postato questo !! – Nico