Swift:将视图从堆栈视图带到前面

时间:2017-10-16 22:35:29

标签: ios swift swift3 uikit uistackview

我有一个带有视图的堆栈视图:1,2,3,4和5

在Stack视图中查找从view4引入Image View4的方法,在所有其他视图之上。我需要这个的原因是因为我在View3中的Image View3上移动了Image View4。

我试图在视图层次结构中的view4上移动view3,但这只是在堆栈视图中交换它们的位置。

enter image description here

3 个答案:

答案 0 :(得分:2)

来自UIStackView documentation

  

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)