如何在Swift的另一个视图前面显示视图?

vk2*_*015 16 interface-builder ios swift

以下是我的视图在IB中的组织方式,顶部 - >应用程序启动时的底部.

用户可以做一些事情使"类别表视图标题"暂时扩展到"名称视图" - 但是一旦这样做,分配给"类别表视图标题"的.TouchDown操作不再适用于与"名称视图"重叠的任何位置(即,用户可以在不与名称视图重叠的任何地方点击标题,它仍然可以工作).

在此输入图像描述

我知道这可能令人困惑,所以我抽出了一些盒子.左边是原版,右边是用户操作 - 问题出现在右侧,红色框上的操作仅在用户点击下半部而不是上半部时才有效.

在此输入图像描述

我的猜测是因为视图层次结构中的标题比名称视图更低,但是我很难在不弄乱一堆约束的情况下更改它.

我也尝试过设置nameView.hidden = true,但这不起作用.

Cha*_*lva 39

如果要将子视图放在前面,可以使用:

SWIFT 4更新

self.view.bringSubviewToFront(yourView)
Run Code Online (Sandbox Code Playgroud)

SWIFT 3更新

self.view.bringSubview(toFront: yourView)
Run Code Online (Sandbox Code Playgroud)

发送视图: -

SWIFT 4更新

self.view.sendSubviewToBack(yourView)
Run Code Online (Sandbox Code Playgroud)

SWIFT 3更新

self.view.sendSubview(toBack: yourView)
Run Code Online (Sandbox Code Playgroud)


Yod*_*ama 12

斯威夫特 5.1+

UIKit 将视图从后向前绘制,这意味着堆栈较高的视图绘制在较低的视图之上。如果你想把一个子视图放在前面,有一个方法适合你:bringSubviewToFront()。下面是一个例子:

parentView.bringSubviewToFront(childView)
Run Code Online (Sandbox Code Playgroud)

这个方法也可以用来把任何子视图放在前面,即使你不确定它在哪里:

childView.superview?.bringSubviewToFront(childView)
Run Code Online (Sandbox Code Playgroud)


Vin*_*ino 10

斯威夫特 5

将子视图置于前面

self.view.bringSubviewToFront(yourView)
Run Code Online (Sandbox Code Playgroud)

返回子视图

self.view.sendSubviewToBack(yourView)
Run Code Online (Sandbox Code Playgroud)