2015-03-02 9 views
7

Ich benutze ViewWillTransitionToSize, um zu erkennen, wenn ein Gerät in Querformat dreht. Je nach Zielgröße kann ich, wenn Überschrift für Landschaft ermitteln und Züge nach Bedarf anpassen ...iOS-AnsichtWillTransitionToSize und Geräteausrichtung

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 

    if size.width > size.height { 
     self.setOverrideTraitCollection(UITraitCollection(horizontalSizeClass: UIUserInterfaceSizeClass.Regular), forChildViewController: viewController) 
    } 
    else{ 
     self.setOverrideTraitCollection(nil, forChildViewController: viewController) 
    } 

    super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator) 
} 

Allerdings möchte ich in der Lage sein zu erkennen, ob mein Gerät Landschaft links oder Landschafts- transitioning Recht. Dadurch kann ich je nach Ausrichtung des Geräts unterschiedliche Verhaltensweisen oder Ansichten erstellen. (links oder rechts).

Ist dies möglich, ohne veraltete Funktionen zu verwenden?

Ich dachte an Status-Bar Orientierung mit ...

let orientation = UIApplication.sharedApplication().statusBarOrientation; 
    if(orientation == UIInterfaceOrientation.LandscapeLeft) 
    { 
     // Do something 
    } 
    else if(orientation == UIInterfaceOrientation.LandscapeRight) 
    { 
     // Do something else 
    } 

... aber das hilft nicht, da dies der ‚alte‘ Orientierung Status zu geben scheint.

Wie kann ich die spezifische Zielausrichtung erhalten?

Antwort

0

Verwenden [UIDevice currentDevice].orientation

6

Sie können Orientierung erhalten, während die Verwendung rotierenden UIViewControllerTransitionCoordinator wie folgt:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
    super.viewWillTransition(to: size, with: coordinator) 

    // will execute before rotation 

    coordinator.animate(alongsideTransition: { (context: UIViewControllerTransitionCoordinatorContext) in 

     // will execute during rotation 
     let orientation = UIApplication.shared.statusBarOrientation 
     if orientation == .landscapeLeft 
     { 
      // Do something 
     } 
     else if orientation == .landscapeRight 
     { 
      // Do something else 
     } 
    }) { (context: UIViewControllerTransitionCoordinatorContext) in 
     // will execute after rotation 
    } 
} 
Verwandte Themen