我正在阅读这篇文章:
“如果您希望UINavigationController显示视图控制器以确定自动旋转掩码,则继承子类UINavigationController并覆盖它:...”
他们将此作为对supportInterfaceOrientations -
的回报return self.topViewController.supportedInterfaceOrientations;
我想问一个人说自动旋转面罩时“面具”是什么意思?这段代码意味着什么?
答案 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
}
}
我们想这样做,因为这个想法是,如果一个人正在玩游戏,并且他们接到电话,他们可能会将电话倒挂接听电话,所以我们不希望电话能够支持颠倒的肖像