如何将子视图从其父视图的父视图置于顶部

Posted

技术标签:

【中文标题】如何将子视图从其父视图的父视图置于顶部【英文标题】:How to bring subView to top from superview of its superview 【发布时间】:2013-09-25 06:45:29 【问题描述】:

我有一个视图层次结构,即视图 1 --> 视图 2 --> 视图 3。因此,视图 3 是视图 2 的子视图,它是视图 1 的子视图。现在,从视图 1,我想带来视图3 到前面,而不将视图 2 放在前面。由于视图 2 中的相对定位,我无法在窗口中添加视图 3。

有什么想法吗?

【问题讨论】:

【参考方案1】:

不,你不能。除非 view3 应该从视图 2 中删除并添加到视图 1,然后使用 bringSubviewToFront: 方法使其位于前面。

【讨论】:

这是有效的。这里唯一缺少的是,您需要更改视图 3 相对于视图 1 坐标的中心。 当然,当您将作为子视图添加到新视图框架时,对于新的父视图而言,变化是显而易见的。【参考方案2】:

见Move a view to a new superview without flickering,你可以将相对框架转换为窗口,然后将视图添加到窗口,这将使视图3保持在其原始框架上

【讨论】:

【参考方案3】:

你可以试试这个代码..

[self.view bringSubviewToFront:yourview];

【讨论】:

这不起作用,因为 view3 不是 view1 的直接子视图。【参考方案4】:

不访问view2就不能直接访问view3。

试试这个:

[view2 bringSubviewToFront:view3];
[view1 bringSubviewToFront:view2];

【讨论】:

以上是关于如何将子视图从其父视图的父视图置于顶部的主要内容,如果未能解决你的问题,请参考以下文章

将子视图置于一切之上,但低于另一个 UIView

如何将 iCarousel 的当前视图置于 iCarouselTypeWheel 中其他视图的顶部

将图像视图图像置于顶部

在 Swift 中选择时如何将子视图置于前面?

如何将子视图上的触摸事件的坐标转换为其父视图中的坐标?

如何将子视图添加到 UIViewController 将 UINavigationBar 推到后面