自转面罩是什么意思?

时间:2015-12-19 09:46:32

标签: ios iphone xcode

我正在阅读这篇文章:

“如果您希望UINavigationController显示视图控制器以确定自动旋转掩码,则继承子类UINavigationController并覆盖它:...”

他们将此作为对supportInterfaceOrientations -

的回报
return self.topViewController.supportedInterfaceOrientations;

我想问一个人说自动旋转面罩时“面具”是什么意思?这段代码意味着什么?

1 个答案:

答案 0 :(得分:0)

  

在计算机科学中,掩码是用于逐位运算的数据,特别是在位字段中。 -Wikipedia

基本上发生的事情是您的设备有4种设置,纵向,横向左侧,右侧横向和纵向颠倒。现在要允许多种设置,您需要设置某种标志系统。基本视觉描述

我想要的方向是[X]人像[]风景左[]风景右[]人像颠倒。

基本上这说我只想支持纵向。

所以要将其转换为计算机代码,我们使用二进制操作

orientation = 1,0,0,0

但是这仍然不适合计算机,我们需要将其转换为字节格式。

我们移位这些位,以便我们可以将位压缩成字节, 肖像是1&lt;&lt;&lt; 3 LL为1 <&lt;&lt; 2 LR为1 <&lt;&lt; 1和PUD为1 <&lt; 0。

然后我们可以将它们与以下操作结合起来

取向=(1 <&lt; 3)| (0 <&lt; 2)| (0 <&lt; 1)| (0℃;&小于0)

成为

orientation = 1000(这是二进制,而不是一千)

现在采用计算机可读取的可读格式。

它将检查每个位是否处于活动状态,然后支持它。

现在已经为您定义了这些值,因此您无需进行数学计算即可获得它们。所以你只想说:

orientation = UIInterfaceOrientationMask.Portrait

现在实际使用此代码就像:

override  func supportedInterfaceOrientations() -> UInterfaceOrientationMask {
    return UIInterfaceOrientationMask.Portrait

}

要获得自动旋转,它将如下所示:

override  func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
        return UIInterfaceOrientationMask.AllButUpsideDown
    } else {
        return UIInterfaceOrientationMask.All
    }
}

我们想这样做,因为这个想法是,如果一个人正在玩游戏,并且他们接到电话,他们可能会将电话倒挂接听电话,所以我们不希望电话能够支持颠倒的肖像