Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何使透明视图控制器加载到所有其他视图控制器之上?_Iphone_Ios_Objective C_Uiviewcontroller - Fatal编程技术网

Iphone 如何使透明视图控制器加载到所有其他视图控制器之上?

Iphone 如何使透明视图控制器加载到所有其他视图控制器之上?,iphone,ios,objective-c,uiviewcontroller,Iphone,Ios,Objective C,Uiviewcontroller,因此,我正在为iPhone创建一个游戏,我希望在任何时候都能加载一个透明的视图控制器,它比我的所有其他视图控制器都高。这个透明的视图控制器将在每个视图的顶部显示游戏时间、当前资金等内容。我想这样做,这样时钟计时器的所有代码都可以保存在一个文件中,而不需要复制/粘贴到我所有不同的OtherViewController.m文件中。我已经研究了一段时间了,但是我似乎不知道如何创建这个视图控制器而不阻止它后面的视图控制器,或者在转换到新视图时不阻止它。欢迎就如何做到这一点以及可能的替代解决方案提出任何建

因此,我正在为iPhone创建一个游戏,我希望在任何时候都能加载一个透明的视图控制器,它比我的所有其他视图控制器都高。这个透明的视图控制器将在每个视图的顶部显示游戏时间、当前资金等内容。我想这样做,这样时钟计时器的所有代码都可以保存在一个文件中,而不需要复制/粘贴到我所有不同的OtherViewController.m文件中。我已经研究了一段时间了,但是我似乎不知道如何创建这个视图控制器而不阻止它后面的视图控制器,或者在转换到新视图时不阻止它。欢迎就如何做到这一点以及可能的替代解决方案提出任何建议。谢谢

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

您可以使用继承来构建一个供所有其他控制器使用的父视图控制器-如果这样做,您可能不需要覆盖整个可见区域的透明视图,但您可以根据需要添加诸如时间/分数/抬头显示器(HUD)之类的项目,并根据您所处的视图移动它们。举两个完全人为的例子,在游戏的飞行部分,你可能希望所有这些信息都显示在屏幕的顶部,只覆盖天空,但是如果你在游戏的鸭子射击部分,这些信息应该显示在屏幕的底部,这样你就不会隐藏鸭子


首先,我将试用一个基类视图控制器,它在
viewdiload:

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


我将透明视图涂成了蓝色,这样您就可以看到它了——容器视图在它下面向上延伸到状态栏。当您导航到不同的控制器时,它们将滑入透明视图下方,该视图将保持静止。

在我看来,这似乎是最好的解决方案。我已经试过了,我想这会管用的!非常感谢您的详细回答!