Xcode在整个屏幕上添加子视图高于一切

Posted

技术标签:

【中文标题】Xcode在整个屏幕上添加子视图高于一切【英文标题】:Xcode Adding Subview on entire screen above everything 【发布时间】:2011-07-25 13:25:46 【问题描述】:

我想使用 addSubview 方法在我的屏幕上添加新视图。但是,新视图还必须包括导航栏等,这意味着它应该包括整个屏幕。我该怎么办?

每当我尝试添加子视图时,它总是在导航栏下显示新视图。

我不想使用 pushViewController 或 presentModelViewController,因为新添加的视图不透明,我可以看到背景,但我不想与诸如条形按钮表等背景对象进行交互。 对不起英语,我希望我清楚地告诉了问题是什么。

【问题讨论】:

【参考方案1】:

只需设置您之前添加的视图的frame 属性,并将其设置为屏幕边界。

[myView setFrame:[[UIScreen mainScreen] bounds];
[self.navigationController.view addSubview:myView];

如果您想禁用与导航栏的交互:

[self.navigationController.navigationBar setUserInteractionEnabled:NO];

【讨论】:

不起作用,仍然没有覆盖导航栏。整个屏幕,除了导航和状态栏 谁是你的实现中addSubview:的接收者? 啊,我的错误是我试图在 self.view 上添加子视图。它解决了我的问题。然而,尽管新视图覆盖了导航栏,它仍然与导航栏按钮交互。每当我添加子视图时,是否有机会减少交互或者我应该以编程方式禁用所有按钮、表格等 非常感谢。添加子视图后,我必须以编程方式禁用所有交互。再次感谢:) 这个解决方案对我有用。但我必须添加这一行 -> myView.layer.zPosition = 1000【参考方案2】:

您可以看看在根窗口上方添加另一个 UIWindow。

【讨论】:

【参考方案3】:

当我尝试执行 navigationController.view addSubview 时,它不会覆盖我的标签栏,所以我对我的应用代理窗口执行了以下操作:

[self.window addSubview:myView];

如果您需要从另一个类访问您的 appDelegate,您只需导入您的应用程序委托并从中调用它。

【讨论】:

以上是关于Xcode在整个屏幕上添加子视图高于一切的主要内容,如果未能解决你的问题,请参考以下文章

添加子视图时屏幕变形

Swift:添加子视图时视图的框架发生变化

在 UITableView 上添加子视图

UIButton在添加到子视图时没有收到触摸,但在添加到主视图时会收到

为啥子视图控制器占据整个屏幕?

如果两个 UITableView 被添加为屏幕上的子视图,导航栏只会折叠一个 UITableView