2

通常,开发人员会尝试将子视图放在前面。相反,如何将superview 放在前面?

我正在寻找bringSubviewToFront(_:). 它应该看起来像bringSuperviewToFront(_:)

4

3 回答 3

2

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

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

于 2015-10-08T11:45:01.617 回答
2

我不认为你能做到这一点。视图分层放置,每个子视图层都是超级视图层的一部分。您想要实现的效果可以通过隐藏/删除您想要在其上获得“置顶”效果的视图的所有子视图来实现。

这适用于子视图,因为通常您希望根据图层位置在同一父视图中显示/隐藏子视图!

于 2015-10-08T11:44:02.297 回答
0

本着不那么粗鲁的精神。

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

这将把它带到前面。如:

bringSubviewToFront(mySubview)

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

于 2015-10-08T11:43:19.493 回答