Wie kann ich die Ausrichtung in Swift programmgesteuert drehen?

Ich habe es am nächsten versucht:

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

au

viewWillAppear

aber es funktioniert nicht. Wie kann ich meinen Bildschirm auf viewWillAppear drehen?

AKTUALISIERE

Ich verwende den nächsten Code zum Sperren einer Ausrichtung:

var shouldRotate = true
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int {
    if shouldRotate == true {
        return Int(UIInterfaceOrientationMask.Portrait.rawValue)
    } else {
        return Int(UIInterfaceOrientationMask.LandscapeLeft.rawValue)
    }
}

Swift 4.0

  private func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int {
        if shouldRotate == true {
            return Int(UIInterfaceOrientationMask.portrait.rawValue)
        } else {
            return Int(UIInterfaceOrientationMask.landscapeLeft.rawValue)
        }
    }

und in meinem ERSTEN Controller in viewWillAppear setze ich:

if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
    appDelegate.shouldRotate = true
}

in meinem zweiten Controller:

if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
    appDelegate.shouldRotate = false
}

so, wenn ich vom zweiten Controller zum ersten zurückkehre:

Ich drehe es nach links - dreht sich nicht, dreht sich zurück nach rechts - nichts, dreht sich nach links, noch einmal - es dreht sich.

Wie kann ich es reparieren

Antworten auf die Frage(8)

Ihre Antwort auf die Frage