2015-03-02 18 views
7

Bir aygıtın yatay konuma geçtiğini algılamak için viewWillTransitionToSize kullanıyorum. Hedef boyutuna bağlı olarak, benim cihaz yatay sol veya landscape- geçiş olup olmadığını tespit edebilmek istiyorum ... AncakiOS viewWillTransitionToSize ve aygıt yönlendirmesi

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) 
} 

manzara için başlık halinde algılamak ve gerektiği gibi benim özelliklerini ayarlayabilirsiniz sağ. Bu, cihazın belirli yönlendirmesine bağlı olarak farklı davranışlar veya görünümler oluşturmama izin verecektir. (sol veya sağ).

Kullanımdan kaldırılmış işlevler kullanmaksızın bu mümkün mü?

ben ... durum çubuğu yönünü kullanmanın
let orientation = UIApplication.sharedApplication().statusBarOrientation; 
    if(orientation == UIInterfaceOrientation.LandscapeLeft) 
    { 
     // Do something 
    } 
    else if(orientation == UIInterfaceOrientation.LandscapeRight) 
    { 
     // Do something else 
    } 

düşünüyordu ... ama bu 'eski' statü yönünü vermek göründüğü için o yardımcı olmuyor.

Belirli hedef yönlendirmeyi nasıl alabilirim?

cevap

0

Kullanım [UIDevice currentDevice].orientation

6

olarak kullanılmasını UIViewControllerTransitionCoordinator dönen ederken yönünü alabilirsiniz şöyle:

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 
    } 
} 
İlgili konular