如何将超级视图带到前面?

how does one bring superview to front?

通常开发人员会尝试将子视图置于最前面。相反,如何将 superview 带到前面?

我正在寻找 bringSubviewToFront(_:) 的反转版本。它应该看起来像 bringSuperviewToFront(_:)

本着少粗鲁的精神。

func bringSubviewToFront(view: UIView) {
    let superview = view.superview
    superview?.addSubview(view)
}

这将把它带到前面。如:

bringSubviewToFront(mySubview)

以上代码所做的是将视图从其父视图层次结构中的任何位置分离出来,并将其重新附加到所有子视图的顶部。这具有将其带到前面的效果。如果视图不是层次结构的一部分,则该函数不执行任何操作。

我认为你做不到。视图是分层放置的,每个子视图层都是超级视图层的一部分。您想要实现的效果可以通过 hiding/removing 您想要获得 置于顶层 效果的视图的所有子视图来实现。

这对子视图很有效,因为通常你会希望 show/hide 子视图基于它们的层位置在同一个父视图中!

I'm looking for a reverse of bringSubviewToFront(:). It should look like bringSuperviewToFront(:)

那不存在。 不要给你的按钮一个子视图,而是创建某个容器的子视图和按钮子视图。然后您可以调整它们的相对 z 位置以适合您的目的。