web-dev-qa-db-ja.com

Swiftで別のビューの前にビューを表示するにはどうすればよいですか?

以下は、ビューがIBでどのように整理されているか、アプリが開始されたときのトップ->ボトムです。

ユーザーは、「カテゴリテーブルビューヘッダー」を一時的に「名前ビュー」の上に拡張するために何かを行うことができます-ただし、そうすると、「カテゴリテーブルビューヘッダー」に割り当てられた.TouchDownアクションは、「名前ビュー」と重複する場所では機能しなくなります(つまり、ユーザーはヘッダーが名前ビューと重ならないどこでもタップでき、それでも機能します)。

enter image description here

私はそれが混乱するかもしれないことを知っているので、私はいくつかの箱を描きました。左側はオリジナル、右側はユーザーのアクション後-問題は右側が赤いボックスのアクションが機能するのは、ユーザーが上半分ではなく下半分をタップした場合のみです。

enter image description here

私の推測では、ヘッダーはビュー階層で名前ビューよりも低いためですが、多くの制約をいじらずに変更するのは難しいでしょう。

また、nameView.hidden = trueを設定しようとしましたが、うまくいきません。

15
vk2015

サブビューを前面に表示する場合は、次を使用できます。

Swift 4 UPDATE

self.view.bringSubviewToFront(yourView)

Swift 3 UPDATE

self.view.bringSubview(toFront: yourView)

ビューを後ろに送信:-

Swift 4 UPDATE

self.view.sendSubviewToBack(yourView)

Swift 3 UPDATE

self.view.sendSubview(toBack: yourView)
35

スーパービューからメソッドbringSubviewToFrontおよびsendSubviewToBackを使用して、サブビューの順序を制御できます。

Self.view.subview配列を使用して、スーパービューに含まれるすべてのサブビューにアクセスできます。

4
tosha

In Swift 5

サブビューを前面に表示するには

self.view.bringSubviewToFront(yourView)

サブビューをバックに送信するには

self.view.sendSubviewToBack(yourView)
4
Vinoth Vino

Swift以降、メソッドが更新されました

私のために働いていて、うまくいけばあなたのために使っているのは:

YourView.bringSubview(toFront: yourelementA)
YourView.bringSubview(toFront: yourelementB)

または、次を使用して、最前面にあるオブジェクトを送信できます。

YourView.sendSubview(toBack: yourelementC)

これが役立つことを願っています

1
K-A