tutorial library language for español developer develop apps apple ios xcode swift

ios - library - swift tutorial español



Error de SupportInterfaceOrientations() en Swift 2.0 (3)

Acabo de migrar un proyecto a Swift 2.0 y este código que funciona anteriormente ahora produce un error:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { return Int(UIInterfaceOrientationMask.PortraitUpsideDown.rawValue) | Int(UIInterfaceOrientationMask.Portrait.rawValue) }

El error indica que los tipos de devolución son incorrectos, pero he intentado varias formas de devolver esto sin suerte.

No se puede convertir la expresión de retorno de tipo ''Int'' para devolver el tipo ''UIInterfaceOrientationMask''


A partir de Swift 2.0, el enmascaramiento de bits se reemplaza utilizando matrices de valores de máscara, su código ahora debería leer:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { return [.Portrait, .PortraitUpsideDown] }


Hay una actualización de supportInterfaceOrientations para Swift 3.0:

override var supportedInterfaceOrientations: UIInterfaceOrientationMask { return UIInterfaceOrientationMask.portrait }

Y función para autorotating:

override var shouldAutorotate: Bool { return true }


La respuesta de Danny Bravo es correcta, pero quería señalar otra cosa. A partir de Swift 2.0, UIInterfaceOrientationMask (y la mayoría de los otros tipos de máscara de bits) se ajustan a OptionSetType , que se ajusta a AlgebraSetType , lo que significa que puede realizar todo tipo de operaciones en operaciones como union , intersect , etc.

Por ejemplo, en Swift 1.2, código como este:

override func supportedInterfaceOrientations() -> Int { var orientations = UIInterfaceOrientationMask.Portrait if FeatureManager.hasLandscape() { orientations |= UIInterfaceOrientationMask.Landscape } return Int(orientations.rawValue) }

... sería más así en Swift 2.0:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { var orientations = UIInterfaceOrientationMask.Portrait if FeatureManager.hasLandscape() { orientations.insert( UIInterfaceOrientationMask.Landscape ) } return orientations }