如何检查目标 C 屏幕上当前显示的子视图?

Posted

技术标签:

【中文标题】如何检查目标 C 屏幕上当前显示的子视图?【英文标题】:How to check which subview is currently displayed on screen in objective C? 【发布时间】:2015-10-01 10:50:29 【问题描述】:

我想检查哪个子视图现在在屏幕上可见或被其他视图覆盖,在以下情况下我无法做到这一点。

if (viewController.isViewLoaded && viewController.view.window) 
  // viewController is visible

谁能给我一个子视图的例子?

如果 viewController 是我添加子视图的主控制器,我想检查此控制器的子视图子之一的条件。

【问题讨论】:

【参考方案1】:

您可以通过以下代码sn-p获得最顶部的视图

topMostSubView = [[[[UIApplication sharedApplication] keyWindow] subviews] lastObject];

通常这将为您提供顶视图,但不能保证它对用户可见。例如,它可能不在屏幕上,alpha 为 0.0,或者大小为 0x0。

也可能是 keyWindow 没有子视图,所以你应该先测试一下。

如果你想在最顶层的视图上添加另一个子视图,你可以简单地使用 addSubview: 将它直接添加到 keyWindow 中,它会立即成为最顶层的视图。

【讨论】:

以上是关于如何检查目标 C 屏幕上当前显示的子视图?的主要内容,如果未能解决你的问题,请参考以下文章

在视图已经可见时更改 uitabbar 图标

使用 ListView-Adapter 预加载更多视图

主视图/导航前的登录屏幕

SwiftUI 布局(Layout)基础

视图设计问题:如何使滚动视图的子视图填充屏幕?

如何将 xib 的子视图显示到另一个 xib 的表格单元加载中