Ios 屏幕的方向?

Ios 屏幕的方向?,ios,iphone,swift,sprite-kit,Ios,Iphone,Swift,Sprite Kit,如何确保只允许纵向或倒置纵向 我在项目设置中进行了更改,但在GameViewController中进行更改时遇到问题 我需要在此函数中进行更改: override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { if UIDevice.currentDevice().userInterfaceIdiom == .Phone { return .AllButUpsideDown

如何确保只允许纵向或倒置纵向

我在项目设置中进行了更改,但在GameViewController中进行更改时遇到问题

我需要在此函数中进行更改:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
        return .AllButUpsideDown
    } else {
        return .All
    }
}
但是,“UIInterfaceOrientationMask”结构没有只允许纵向和倒置纵向的选项。

您可能需要尝试:

return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown)

不确定Swift是否支持位运算符

您必须在项目设置中允许所有方向,然后在viewController中只允许纵向或倒置纵向,除了
GameViewController

// BaseViewController
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
        return UIInterfaceOrientationMask.Portrait.rawValue | UIInterfaceOrientationMask.PortraitUpsideDown.rawValue
    } else {
        return .All
    }
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
        return .AllButUpsideDown
    } else {
        return .All
    }
}
最后在
GameViewController
中:

// BaseViewController
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
        return UIInterfaceOrientationMask.Portrait.rawValue | UIInterfaceOrientationMask.PortraitUpsideDown.rawValue
    } else {
        return .All
    }
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
        return .AllButUpsideDown
    } else {
        return .All
    }
}

我似乎无法将“|”运算符与.patriot和.patriot upsidedown一起使用。正在尝试使用
rawValue
谢谢。为什么我必须使用“UIInterfaceOrientationTask.Portrait.rawValue”而不是“.Portrait.rawValue”来执行OR操作?我认为
.Portrait.rawValue
也可以工作。实际上,这取决于返回值类型。它适用于
uiInterfaceOrientationTask
而不是
Int