如何在stackview中找到视图的superview / parentviewcontroller

问题描述 投票:0回答:2

希望这不是太混乱。

我有一个主视图控制器(MainView),在视图的底部有一个stackview,在stackview里面我有三个视图。在其中一个视图(让我们称之为footerView)我添加了一点tooltipView - 因为footerView位于MainView底部的堆栈视图内 - 它与其他视图有一些重叠。我想告诉tooltipView在所有观点之上,但它不起作用。在footerView里面 - 它没有superview(我认为因为它在stackview里面)所以我不能使用parentView.bringSubviewToFront(childView)

我该怎么做呢?通过层次授权是唯一的方式吗?

ios swift subview stackview superview
2个回答
1
投票

您可以手动设置每个图层的zPosition。默认值为0,因此如果不手动控制它,可能无法获得所需的值。举个例子,你可以试试

tooltipView.layer.zPosition = 1

要么

tooltipView.layer.zPosition = .greatestFiniteMagnitude

将其设置为1将使其高于其他默认为0的视图或将其设置为.greatestFiniteMagnitude将始终在前面。

看看this answer on zPostionApple's documentation on zPostion


0
投票

Tommy的回答确实有所帮助,但另一件有帮助的事情是我在tooltipView完成设置之前创建了我的footerView - 因此为什么superviewnil。我把tooltipView的初始化移到了func layoutSubviews()内部并且它有效。

但也确保你取消了clip to bounds。这就是为什么无论我用zPosition做了什么都没有区别

© www.soinside.com 2019 - 2024. All rights reserved.