如何在不知道它是哪个视图的情况下将 UIView 添加为最顶层视图的子视图?
Posted
技术标签:
【中文标题】如何在不知道它是哪个视图的情况下将 UIView 添加为最顶层视图的子视图?【英文标题】:How do I add a UIView as a subview of the topmost view without knowing which view it is? 【发布时间】:2013-06-05 19:56:36 【问题描述】:我要添加视图:
[aView addSubview:myNewView];
我要做的是找出在任何给定时刻显示的最顶层视图是什么视图,因此我可以在其顶部动态添加一个视图。例如,假设我的视图堆栈如下所示:
-
模态相机视图(在所有内容之上,当前正在显示)
标签视图
导航视图
查看
表格视图
我想在 0 处的任何视图上动态放置一些东西。
有谁知道如何做到这一点,或者是否有可能?
【问题讨论】:
[self.view subviews] 返回一个 NSArray。您可以通过 [self.view subviewAtIndex:0]; 访问索引 0 处的视图 您的意思是笼统地讲,还是专门想在UIImagePickerController
的视图之上叠加一个视图?
【参考方案1】:
视图层次结构不是由堆栈表示,而是由树表示,因此没有the topmost view
。
如果您只想在所有其他视图之上添加一个视图,请将其添加到 UIWindow
,就像在 this answer 中所做的那样:
UIWindow* mainWindow = [[UIApplication sharedApplication] keyWindow];
[mainWindow addSubview:myNewView];
如果你所说的视图真的是指视图控制器,那么我认为没有办法“遍历”当前堆栈,因为它取决于堆叠视图控制器的类,并且与视图层次结构的原因相同: 一个视图控制器可以有很多孩子——例如UITabBarController
。
【讨论】:
正是我需要的。谢谢。以上是关于如何在不知道它是哪个视图的情况下将 UIView 添加为最顶层视图的子视图?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不损失视网膜显示质量的情况下将 UIView 捕获到 UIImage
如何在不丢失导航栏的情况下将子视图添加到 UINavigation 控制器?
如何在不使用助手编辑器的情况下将 IBOutlet 和 IBAction 连接到视图控制器
如何在不破坏滚动功能的情况下将 UIImage 添加到 UIScrollView?