显示没有 UIViewController 的 UIView

Posted

技术标签:

【中文标题】显示没有 UIViewController 的 UIView【英文标题】:Display a UIView without a UIViewController 【发布时间】:2011-06-29 17:43:51 【问题描述】:

我正在尝试创建一个可以在游戏中的任何时候显示的自定义 UIView。换句话说,UIView 没有绑定到特定的 UIViewController。

现在我的解决方案是在我的自定义 UIView 中存储一个 UIViewController*,每当我使用的 UIViewController 发生更改时设置它,然后将 UIView 添加为控制器的子视图。

我认为必须有更好、更安全的方法来处理这个问题,但到目前为止我还没有找到任何东西。

谢谢

【问题讨论】:

只是好奇 - 你想制作某种横幅吗? 是的,如果您不使用 UIViewController,请不要创建它! 是的,它是一种横幅。与实际显示的屏幕不同的东西,因为它可以(理论上)显示在应用程序的任何屏幕上。我的目标是让它与视图控制器完全分开,这样我就不必担心它会被添加到每个视图控制器中。 【参考方案1】:

创建一个 UIView 子类。文件 > 新建文件 > Objective-C 类 > (子类) UIView > 给它一个类名。

所以现在你应该有类似 MyCustomView.h 和 .m

在要显示自定义视图的视图控制器中导入头文件

#import "MyCustomView.h"

然后只需将其添加到您当前的视图中

MyCustomView *myCView = [[MyCustomView alloc] initWithFrame:<Where You Want It>];
[self.view addSubview:myCView];
[myCView release];

您可以使用 Interface Builder 以图形方式布置自定义视图。或者您可以以编程方式进行。如果您要采用 IB 方式,请创建一个新文件,单击用户界面,然后单击查看。给它相同的类名,即 (MyCustomView)。

选择文件所有者显示身份检查器(选项命令 3)。 对于 Class,将其从 NSObject 更改为 MyCustomView。

【讨论】:

我已经完成了所有这些工作,问题是我试图避免将其添加到另一个视图或视图控制器中。我只想将视图直接绘制到屏幕上。 然后你应该将它添加到窗口或根视图控制器,然后使用 Z 排序以确保它位于任何其他视图的前面。 啊,没有意识到我可以将它添加到窗口中。当然......现在它在屏幕的一侧显示在侧面,但这应该很容易修复。谢谢

以上是关于显示没有 UIViewController 的 UIView的主要内容,如果未能解决你的问题,请参考以下文章

使用 pushViewController 时没有 Xib 的 UIViewController 显示空白

呈现没有动画的 ViewController 会瞬间显示呈现者 UIViewController

将 UIViewController 显示为没有 seguge 的弹出窗口

UIViewController 没有填满屏幕

Swift -> 我的原型单元格(UITableViewCell)没有显示在我的 UIViewController 和 UITableView

UIViewController 呈现 UINavigationController - 没有导航栏?