2015-05-07 9 views
5

Bei allgemeinen Einstellungen erlaube ich Portrait und LandscapeLeft, Landschaftsbildmodus. Ich möchte die Landschaftsmodi deaktivieren. Auf viewController schreibe ich diesen Code:Wie deaktiviere und aktiviere die automatische Drehung bei swift?

override func shouldAutorotate() -> Bool { 

     return false 

} 

Die automatische Drehung funktioniert jedoch ignorieren diese Funktion. Wie deaktiviere und aktiviere ich Autorotation auf swift? IOS-Programmierung

Antwort

8

Es könnte der richtige Code sein, aber nicht in der richtigen View Controller. Wenn der View Controller beispielsweise in einen UINavigationController eingebettet ist, kann der Navigationscontroller weiterhin rotieren, wodurch der View Controller weiterhin rotiert. Es hängt wirklich von Ihrer speziellen Situation ab.

+0

Hallo Josh, ja ich eingebettete Navigationsansicht Controller meiner Ansicht-Controller. Wo sollte ich diesen Code hinstellen? –

+0

UnterklasseUinaktivierungscontroller und setzen Sie es dort. Im Grunde müssen Sie nur überprüfen, ob der View-Controller oben ist, den Sie drehen möchten oder nicht. –

+0

Ich verstehe nicht, wenn Sie sagen "Überprüfen Sie, ob der View-Controller an der Spitze" Ich Autorotate zurückgeben falsch auf Unterklasse Uinavigationcontroller. Ich Autorotation funktioniert jetzt nicht. das, was ich wollte. nachdem ich Autorotate zurückgegeben habe, true, wenn mein moviewplayer zu spielen beginnt. Wenn ich zur Vollbildautomatik gehe, funktioniert das. Wenn ich den Vollbildmodus verlasse, funktioniert es nicht. Ich verstehe nicht, warum ist das so? –

3

Ich hatte das gleiche Problem, das habe ich behoben.

Follow-

Info -> individuelle ios Zieleigenschaften -> Support-Schnittstelle Orinetations. und löschen [Löschen - Landschaft (links Home-Taste), Landschaft (rechts Home-Taste), Landschaft (oben Home-Taste)]! [1]

Dies wird Ihnen helfen

1

Sie können es tun, indem Sie eine Unterklasse zu schaffen von UINavigationController und im Inneren, dass, überschreiben die AutoRotate Funktion sollte, dann

  • return false für die Viewcontrollers, in dem Sie Autorotations
  • return true für die Viewcontrollers, in dem Sie Autorotations wollen

    deaktivieren möchten
    import UIKit  
    
    class CustomNavigationController: UINavigationController { 
    
    override func shouldAutorotate() -> Bool { 
        if !viewControllers.isEmpty { 
         // Check if this ViewController is the one you want to disable roration on 
         if topViewController!.isKindOfClass(ViewController) {    //ViewController is the name of the topmost viewcontroller 
    
          // If true return false to disable it 
          return false 
         } 
        } 
        // Else normal rotation enabled 
        return true 
        } 
    } 
    

Wenn Sie Autorotation in der gesamten Navigationssteuerung deaktivieren möchten, entfernen Sie das, wenn die Bedingung und return false immer

Verwandte Themen