最好的方法可能涉及重构你的对话代码(注意:我并没有声称在这里提供最好的方法,你不应该要求最好的方法,因为这会引起争论)。模态对话框并不意味着长期存在。允许用户选择难度,然后隐藏游戏的对话框。游戏结束屏幕也可以是主应用程序窗口上的对话框。
在以下选项中,1 提供对所有应用程序状态的即时访问,但 2 更接近最佳实践,因为它将游戏逻辑与菜单导航/设置逻辑分开。
选项 1:将您的菜单和游戏视图合并到一个视图控制器中
您的主窗口的视图层次结构将是:
UIView (root view) --- UIView (menu layer) --- (all of your menu subviews)
\-- UIView (game layer) --- (all of your game subviews)
新流程将类似于
主视图(菜单层)-> 选择难度(模式)-> 主视图(游戏层)-> 游戏结束(模式)-> 主视图(菜单层)
然后从游戏到菜单的过渡变为:
这两者都发生在一个动画块中
a) 游戏结束对话框 alpha ->0.0f
b) 菜单层 alpha ->1.0f
执行底层dismissModalViewControllerAnimated(false)
操作
选项 2:为您的菜单和游戏视图设置单独的视图控制器
您的主窗口的视图层次结构将是:
UIViewController (root) --- UIView (menu view) --- (all your menu subviews)
UIViewController --- UIView (game view) --- (all your game subviews)
您可以通过设置UIWindow
'rootViewController
属性在活动视图控制器之间切换。
新流程将类似于
菜单视图->选择难度(模式)->游戏视图->游戏结束(模式)->菜单视图
然后从游戏到菜单的过渡变为:
这两者都发生在一个动画块中
a) 游戏结束对话框 alpha ->0.0f
b) 设置rootViewController
为菜单视图
执行底层dismissModalViewControllerAnimated(false)
操作