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

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

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

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

谢谢

【问题讨论】:

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

标签: ios 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 排序以确保它位于任何其他视图的前面。
  • 啊,没有意识到我可以将它添加到窗口中。当然......现在它在屏幕的一侧显示在侧面,但这应该很容易修复。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多