希望这不是太混乱。
我有一个主视图控制器(MainView
),在视图的底部有一个stackview,在stackview里面我有三个视图。在其中一个视图(让我们称之为footerView
)我添加了一点tooltipView
- 因为footerView位于MainView
底部的堆栈视图内 - 它与其他视图有一些重叠。我想告诉tooltipView
在所有观点之上,但它不起作用。在footerView
里面 - 它没有superview
(我认为因为它在stackview里面)所以我不能使用parentView.bringSubviewToFront(childView)
。
我该怎么做呢?通过层次授权是唯一的方式吗?
您可以手动设置每个图层的zPosition
。默认值为0,因此如果不手动控制它,可能无法获得所需的值。举个例子,你可以试试
tooltipView.layer.zPosition = 1
要么
tooltipView.layer.zPosition = .greatestFiniteMagnitude
将其设置为1将使其高于其他默认为0的视图或将其设置为.greatestFiniteMagnitude
将始终在前面。
看看this answer on zPostion和Apple's documentation on zPostion。
Tommy的回答确实有所帮助,但另一件有帮助的事情是我在tooltipView
完成设置之前创建了我的footerView
- 因此为什么superview
是nil
。我把tooltipView
的初始化移到了func layoutSubviews()
内部并且它有效。
但也确保你取消了clip to bounds
。这就是为什么无论我用zPosition
做了什么都没有区别