2016-03-28 10 views
1

ersten Mal Posting, so verzeiht mir, wenn ich nicht die richtigen Informationen in meine Frage geben ...iOS - unerwartete Drehung zurück zum Portrait auf segue

Ich erstelle eine App (in swift) und Ich möchte alle Bildschirmausrichtungen für alle Bildschirme unterstützen (und im Xcode-Allgemein-Tab entsprechend eingestellt haben). Es gibt einen Anmelde-/Startbildschirm und der Root-Controller für den Rest der App ist ein UINavigationController.

Mein Problem - Der Bildschirm dreht sich immer wieder auf Hochformat, obwohl das Gerät im Querformat ausgerichtet ist und die Bildschirme alle die Landschaft unterstützen! Ist dies das Standardverhalten auf einem Segment? Und wenn ja, kann ich das irgendwie verhindern? Um klar zu sein - ich möchte nur, dass die Bildschirmdrehung weiterhin die Geräteausrichtung nach einem Übergang widerspiegelt - und alle Bildschirme unterstützen derzeit alle Orientierungen.

Ich habe versucht shouldAutorotate Einstellung für einen bestimmten Bildschirm/View-Controller falsch zurückzukehren, und erweitert UINavigationController auf den sichtbaren Ansicht Controllers shouldautorotate() -Funktion, Bezug zu nehmen, wie folgt:

extension UINavigationController { 
    public override func shouldAutorotate() -> Bool { 
     return visibleViewController!.shouldAutorotate() 
    } 
} 

Diese die Rotation verhindert weg von der (Landschaft) Geräteausrichtung auf segue, aber natürlich dann, wenn der Benutzer zurück zum Portrait dreht der Bildschirm bleibt Landschaft ...

Es scheint, als sollte dies wirklich unkompliziert sein, aber ich konnte keine Informationen finden oder andere Fragen dazu, nur Fragen zur Einschränkung erlaubter Orientierungen (I möchte nur, dass die Bildschirmausrichtung immer die Geräteausrichtung widerspiegelt) ...

Ein Gedanke - gibt es eine Möglichkeit zu erkennen, ob die shootAutorotate-Funktion nach einem Segment aufgerufen wird? Und in diesem Fall false zurückgeben, aber wahr sonst?

Jede Hilfe wäre dankbar erhalten!

Dank

Dan

Antwort

0

diese 2 Methoden in die View-Controller hinzufügen:

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


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