Swift 2.0 中支持的 InterfaceOrientations() 错误



我刚刚将一个项目迁移到 Swift 2.0,这个以前工作的代码现在产生了一个错误:

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

该错误表明返回类型不正确,但我尝试了几种返回它的方法,但没有运气。

无法将类型为"Int"的返回表达式转换为返回类型"UIInterfaceOrientationMask">

从 Swift 2.0 开始,位掩码被掩码值数组所取代,您的代码现在应为:

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

Swift 3.0 的 supportedInterfaceOrientations 有更新:

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {  
    return UIInterfaceOrientationMask.portrait  
}

和自动旋转功能:

override var shouldAutorotate: Bool {
    return true
}

Danny Bravo的回答是正确的,但我想指出另一件事。从 Swift 2.0 开始,UIInterfaceOrientationMask(和大多数其他位掩码类型(都符合 OptionSetType ,这符合 AlgebraSetType ,这意味着您可以对 unionintersect 等进行各种操作。

例如,在 Swift 1.2 中,代码如下:

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

。在 Swift 2.0 中会更像这样:

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

相关内容

  • 没有找到相关文章

最新更新