我在开发iOS应用时遇到问题。我基本上创建的游戏需要用户在不同时间以纵向方式使用系统,然后转移到横向。它们不能自动旋转,因为它会混淆游戏的特性。我找到了一种方法,可以通过设置适当的支持方向来强制在任何给定时间强制我需要的方向,以帮助将其专门锁定:
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
if self.currentGame == nil {
return UIInterfaceOrientationMask.Portrait
}
else {
return self.orientations
}
}
通常游戏被锁定在横向中,但我可以通过更改self.orientations
变量UIInterfaceOrientationMask
来更改游戏。所以在游戏的某个地方,如果我需要改变景观并锁定它,我可以去:
self.orientations = UIInterfaceOrientationMask.Landscape
然后通过在某处执行操作来实际强制旋转:
self.supportedInterfaceOrientations()
UIDevice.currentDevice().setValue(UIInterfaceOrientation.LandscapeLeft.rawValue, forKey: "orientation")
这实际上工作得很好,虽然我正在做一些alpha测试并且在试图找到bug时搞乱。因此,如果我是肖像,然后使用此方法强制旋转到横向,然后将其锁定(反之亦然),它就可以正常工作。但是,如果出于某种原因,我正在侧身拿着iPhone,以便它在技术上不是纵向的(即使它看起来是这样的,因为它被迫),它拒绝旋转。
我知道这种强迫轮换的方法无论如何都是一个黑客攻击。我想知道是否有人知道解决这个问题的方法,或者他们是否知道一种更好的方法来强制旋转设备方向。
非常感谢任何帮助。谢谢!