子视图与子视图控制器 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 与子视图控制器的奇怪行为