我正在开发一款文字游戏应用,其中的一个视图控制器是填字游戏网格。这款应用是一款 iPad 应用,设计为在桌子中间玩,iPad 平放在桌子上,因此在应用中设置了方向,并且 viewControllers 仅设置为纵向。轮到每个用户时,会使用变换旋转视图。以下是早期开发的一个示例。您可以看到中心的图块被旋转以面向蓝色玩家。其他玩家也各有一组面向他们的图块。
如果用户点击网格图标(该图标只在回合开始时出现),则会显示填字游戏屏幕(这是另一个游戏的屏幕截图):
如果用户无法打出任何字母,则有一个“丢弃”按钮可以丢弃这些字母。我想添加一个警报,但警报的默认行为是使用设备的方向。即使它是一个仅限纵向的应用程序,界面也会旋转:
这样做的结果是,由于应用程序的其余部分设计为仅限纵向使用,因此现在旋转了。我想避免这种情况,但我还希望警报面向用户。重要提示:由于 iPad 将平放,因此设备实际上不会在回合之间旋转。但我仍然希望视图旋转。
我认为这可以通过在调用警报之前设置设备或界面方向来实现(可能吗?),但我不希望显示警报的屏幕旋转,而当我将模拟器置于横向时,就会发生这种情况。在实际游戏中,方向将是 iPad 平放时最后所处的方向,因此视图可以向任何方向旋转。我想到的一个可能的解决方案是将警报添加到单独的窗口。第二个窗口可以有不同的方向吗?我可以直接设置警报视图的方向吗?
或者我应该编写自己的 alertViewController。这可能是最简单的解决方案。
编辑:我意识到我没有将其包含在填字游戏 VC 中,尽管它在调用 VC 中:
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .portrait
}
override var shouldAutorotate: Bool {
return false
}
添加该功能可防止其旋转,但现在警报以纵向显示,这实际上是我所期望的。接下来,我尝试以编程方式设置警报的变换:
alertViewController.view.transform = self.view.transform
但那没有用。