如何将透明视图控制器加载到我所有其他视图控制器的上方?

时间:2013-07-30 22:16:54

标签: iphone ios objective-c uiviewcontroller

所以我正在为iPhone创建一个游戏,我想要一直加载一个透明的视图控制器,它超越了我所有的其他视图控制器。这个透明的视图控制器会在每个视图的顶部显示诸如游戏时间,当前金钱等内容。我想这样做,以便时钟计时器的所有代码都可以保存在一个文件中,而不需要复制/粘贴到我所有不同的OtherViewController.m文件中。我已经研究了一段时间,但我似乎无法弄清楚如何创建这个视图控制器而不会阻挡它背后的那个,或者当我转换到新视图时没有被阻挡。欢迎提出有关如何执行此操作以及可能的替代解决方案的任何建议。谢谢!

3 个答案:

答案 0 :(得分:0)

您可以将视图控制器添加为根视图控制器的子视图,并将其视图添加为子视图。您需要对hitTest进行一些篡改,以确保将触摸传递给兄弟视图。

答案 1 :(得分:0)

您可以使用继承来构建所有其他控制器使用的父视图控制器 - 如果这样做,您可能不需要覆盖整个可见区域的透明视图,但您可以添加像时间/分数/ HUD根据需要 - 并根据您所在的视图移动它们。要使用两个完全做作的示例,在游戏的飞行部分中,您可能希望屏幕顶部的所有这些信息仅覆盖天空,但是如果你正在拍摄部分游戏,那么信息应该显示在屏幕的底部,这样你就不会隐藏鸭子了。

我首先尝试使用基类视图控制器来绘制viewDidLoad:

中的视图

答案 2 :(得分:0)

您应该使用自定义容器控制器执行此操作。此控制器顶部具有透明视图,内容视图控制器将显示在此透明视图下方。您可以在IB中使用容器视图执行此操作。从常规的UIViewController开始,在顶部添加透明的UIView,以及您想要的任何子视图。然后,添加容器视图,并使其成为整个屏幕的大小。在左侧的场景列表中,您必须向上移动容器视图,这是主视图的子视图列表中的第一个(这将透明视图放在顶部)。您可以将容器视图中包含的控制器嵌入导航控制器中(导航栏关闭),然后从那里添加其他控制器。

enter image description here

enter image description here

我在图像中将透明视图着色为蓝色,以便您可以看到它 - 容器视图在其下方向上延伸到状态栏。当您导航到不同的控制器时,它们将在透明视图下滑动,该视图将保持静止。