子视图与子视图控制器 z 位置

Posted

技术标签:

【中文标题】子视图与子视图控制器 z 位置【英文标题】:subview vs child view controller z position 【发布时间】:2018-01-18 09:19:16 【问题描述】:

我只是想确定一下:

我有主视图控制器(uiviewcontroller) 然后我有覆盖它的子视图控制器(uiviewcontroller) 然后我将子视图(uiview)添加到具有相同大小的主视图控制器。

如果我按照这个顺序做, 用户会在顶部看到什么?子视图(uiview)还是子视图控制器(uiviewcontroller)?

我测试了一下,让子视图在上面的唯一方法就是添加它 到子视图控制器(uiviewcontroller)。

视图层次结构应该是这样的吗?或者我的测试是错误的(可以)

编辑: 我只想使用 addSubView 来了解默认行为是什么。

编辑 2: 在视图调试器上我可以看到顶部的子视图 但与设备无关。

【问题讨论】:

【参考方案1】:

试试这个

self.view.insertSubview(VC1.view, belowSubview: thatview)

【讨论】:

【参考方案2】:

顶视图将是最后添加到子视图层次结构中的视图。

如果您想将子视图置于顶部,您可以使用以下代码

mainViewController.view.bringSubview(toFront: subView)

您不需要将其添加到子视图控制器中

【讨论】:

问题是:按这个顺序只使用 addSubView。什么是顶视图?子视图(uiview)或子视图控制器(uiviewcontroller) 最后添加为子视图的视图 视图调试器显示该视图,设备不显示。很奇怪。【参考方案3】:

发现错误。

其他视图有bringSubViewToFront / layer.zPosition, 其中一些在 viewDidLayoutSubview 中,在我禁用此代码后,一切正常

让我感到困惑的是视图调试器在顶部显示视图, 但在设备上它被隐藏了。

【讨论】:

以上是关于子视图与子视图控制器 z 位置的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController 与子视图控制器的奇怪行为

NavigationView 奇怪的与子视图之间的转换

(iOS) 音频播放器作为应用程序中所有父视图控制器上的子视图控制器

视图控制器转换动画子视图位置

在视图控制器生命周期中添加子视图的位置

在 ios 中,视图控制器中移动子视图以处理旋转的正确位置在哪里?