¿Cómo verificar si la orientación del dispositivo es horizontal o izquierda en rápido?

if UIDeviceOrientationIsLandscape(UIDevice.currentDevice().orientation) { print("landscape") } if UIDeviceOrientationIsPortrait(UIDevice.currentDevice().orientation){ print("portrait") } 

¿Cómo puedo comprobar si está paisaje a la izquierda o a la derecha?

Solutions Collecting From Web of "¿Cómo verificar si la orientación del dispositivo es horizontal o izquierda en rápido?"

puedes hacer algo así,

 if UIDevice.currentDevice().orientation == UIDeviceOrientation.LandscapeLeft{ } else if UIDevice.currentDevice().orientation == UIDeviceOrientation.LandscapeRight{ } else if UIDevice.currentDevice().orientation == UIDeviceOrientation.UIDeviceOrientationPortraitUpsideDown{ } else if UIDevice.currentDevice().orientation == UIDeviceOrientation.UIDeviceOrientationPortrait{ } 

SWIFT 3

 if UIDevice.current.orientation == UIDeviceOrientation.landscapeLeft { } else if UIDevice.current.orientation == UIDeviceOrientation.landscapeRight { } else if UIDevice.current.orientation == UIDeviceOrientation.portrait { } else if UIDevice.current.orientation == UIDeviceOrientation.portraitUpsideDown { } 

UIDeviceOrientation devolverá un valor para eso:

  enum UIDeviceOrientation : Int { case Unknown case Portrait case PortraitUpsideDown case LandscapeLeft case LandscapeRight case FaceUp case FaceDown } 

Esto funciona en Swift 3 y 4

  switch UIApplication.shanetworking.statusBarOrientation { case .portrait: //do something break case .portraitUpsideDown: //do something break case .landscapeLeft: //do something break case .landscapeRight: //do something break case .unknown: //default break } 

Hay una cosa que destruye todas estas respuestas: es la multitarea del iPad iOS9.

En iOS 9, una aplicación iPad por defecto opta por la multitarea del iPad. Esto significa que debe adoptar todas las orientaciones en todo momento. Dado que no ha optado por la multitarea de iPad, el time de ejecución supone que adopta todas las orientaciones en todo momento, y por lo tanto no necesita molestarse en preguntarle qué orientaciones permite, ya que ya sabe la respuesta (todas )

Para hacer el tamaño de celda correcto para UICollectionView, hago lo siguiente:

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { if UIDevice.current.userInterfaceIdiom == .phone { return CGSize(width: collectionView.frame.size.width, height: 120) } else { var width:CGFloat = 0 let height = 250 // because of iOS9 and iPad multitasking if (UIApplication.shanetworking.statusBarOrientation.rawValue <= UIInterfaceOrientation.portraitUpsideDown.rawValue) { width = (collectionView.frame.size.width - 3) / 3 } else { width = (collectionView.frame.size.width - 4) / 4 } return CGSize(width: Int(width), height: Int(height)) } } 

y dentro de viewWillTransition siguiente:

 override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { if let layout = self.collectionViewLayout as? UICollectionViewFlowLayout { layout.invalidateLayout() } } 

porque funciona más rápido que sin él.