以下是我在应用启动时在IB,top->底部组织视图的方式。
用户可以做一些事情来制作"类别表视图标题"暂时扩展"名称视图" - 但是一旦这样做,.TouchDown操作分配给"类别表视图标题"不再适用于与"名称视图"重叠的任何地方。 (即,用户可以在不与名称视图重叠的任何地方点击标题,它仍然有效。)
我知道这可能令人困惑,所以我抽出了一些盒子。左侧是原件,右侧是用户操作后 - 问题出在右侧,红色框上的操作仅在用户点击下半部而非上半部时才有效。
我的猜测是因为视图层次结构中的标题比名称视图更低,但是我很难在不弄乱一堆约束的情况下更改它。
我也尝试过设置nameView.hidden = true,但这并不起作用。
答案 0 :(得分:30)
如果您想将子视图放在前面,可以使用:
SWIFT 4更新
self.view.bringSubviewToFront(yourView)
SWIFT 3更新
self.view.bringSubview(toFront: yourView)
向后发送视图: -
SWIFT 4更新
self.view.sendSubviewToBack(yourView)
SWIFT 3更新
self.view.sendSubview(toBack: yourView)
答案 1 :(得分:7)
Swift 5.1 +
UIKit将视图拉回到最前面,这意味着堆栈上方的视图被绘制在下方视图的顶部。如果您想将子视图置于最前面,则有一种方法适合您:BringSubviewToFront()。这是一个示例:
parentView.bringSubviewToFront(childView)
此方法也可以用于将任何子视图置于最前面,即使您不确定它在哪里:
childView.superview?.bringSubviewToFront(childView)
答案 2 :(得分:4)
您可以使用以下方法控制子视图的顺序:来自superview的bringSubviewToFront和sendSubviewToBack。
您可以使用self.view.subview数组访问superview包含的所有子视图。
答案 3 :(得分:4)
在 Swift 4.2
中将子视图置于最前面
self.view.bringSubviewToFront(yourView)
向后发送子视图
self.view.sendSubviewToBack(yourView)
答案 4 :(得分:1)
该方法自swift 3
以来已更新什么对我有用,希望对你有用:
YourView.bringSubview(toFront: yourelementA)
YourView.bringSubview(toFront: yourelementB)
或者,您可以使用以下内容发送前面的对象:
YourView.sendSubview(toBack: yourelementC)
我希望这会有所帮助