ios - 如何在不知道它是哪个 View 的情况下将 UIView 添加为最顶层 View 的 subview ?

标签 ios objective-c cocoa-touch uiview subview

我要添加一个 View :

[aView addSubview:myNewView];

我想做的是找到在任何给定时刻显示的最顶层 View 是什么 View ,这样我就可以在其上动态添加 View 。例如,假设我的 View 堆栈如下所示:

  1. 模态相机 View (在所有内容之上,当前正在显示)
  2. 标签 View
  3. 导航 View
  4. 查看
  5. 表格 View

我想动态地将一些东西放在 0 处的任何 View 之上。

有谁知道如何做到这一点,或者这是否可能?

最佳答案

View 层次结构不是由堆栈而是树表示的,因此没有什么是最顶层 View

如果您只想在所有其他 View 之上添加一个 View ,请将其添加到 UIWindow,如 this answer 中所做的那样:

UIWindow* mainWindow = [[UIApplication sharedApplication] keyWindow];
[mainWindow addSubview:myNewView];

如果通过 View 你真的是指 View Controller ,那么我认为没有办法“遍历”当前堆栈,因为它取决于堆栈 View Controller 的类,并且出于与 View 层次结构相同的原因: 一个 View Controller 可以有很多 child - 例如 UITabBarController

关于ios - 如何在不知道它是哪个 View 的情况下将 UIView 添加为最顶层 View 的 subview ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16948695/

相关文章:

ios - SmartStore FMDatabase 未打开

iphone - 扭曲 UIView 的一部分

ios - Health Kit 读取权限

iphone - NSString boundingRectWithSize 使用 CoreText Framesetter 切割高度短? iOS

ios - 弱 self 与弱 self 的区别()

iphone - UITableView 滚动时重复单元格

ios - Interface Builder 无法打开文档 ".storyboard",因为它不存在

ios - swift 中的多个枚举值

iphone - 列出 iPhone 上本地网络上的所有计算机名称

ios - 为什么在 iOS 8 中调用 viewWillRotateToInterfaceOrientation?