我有一个带有视图的堆栈视图:1,2,3,4和5
在Stack视图中查找从view4引入Image View4的方法,在所有其他视图之上。我需要这个的原因是因为我在View3中的Image View3上移动了Image View4。
我试图在视图层次结构中的view4上移动view3,但这只是在堆栈视图中交换它们的位置。
答案 0 :(得分:2)
subviews
数组中[视图]的顺序定义了子视图的Z顺序。如果视图重叠,则具有较低索引的子视图将显示在具有较高索引的子视图后面。
因此,由于堆栈视图的arrangedSubviews
数组中的所有视图也位于堆栈视图的subviews
数组中,因此您应该能够使用标准{{1} } API重新排列视图z-order:
UIView
bringSubview(toFront:)
sendSubview(toBack:)
我不知道在Interface Builder中是否可以这样做。
答案 1 :(得分:1)
使用addSubview(_:)
从堆栈视图中删除图像,并将其作为子视图添加到包含堆栈视图的同一视图中。这将把它置于所有其他观点之上。您也可以使用insertSubview(_:aboveSubview:)
将其直接插入堆栈视图上方。
您需要为新视图添加约束,以便将其放置在您想要的位置。
答案 2 :(得分:0)
您可以在UIViewController中具有IBOutlet属性,但在视图层次结构中将其放置在UIStackView中。 所以你应该使用
stackView.bringSubviewToFront(myView)
而不是
self.view.bringSubviewToFront(myView)