web-dev-qa-db-fra.com

Comment puis-je afficher une vue devant une autre vue, dans Swift?

Vous trouverez ci-dessous la manière dont mes vues sont organisées dans IB, en haut -> en bas lorsque l'application est lancée. 

L'utilisateur peut faire quelque chose pour que "l'en-tête de la vue des catégories" soit temporairement étendu sur la "vue du nom". Toutefois, l'action .TouchDown attribuée à "l'en-tête de la vue des catégories" ne fonctionne plus lorsqu'elle chevauche celle-ci avec c'est-à-dire que l'utilisateur peut appuyer sur l'en-tête n'importe où il ne chevauche pas la vue avec nom et cela fonctionne toujours).

 enter image description here

Je sais que cela peut être déroutant, alors j'ai dessiné des cartons. À gauche, l'original, à droite après l'action de l'utilisateur; le problème à droite, l'action sur la zone rouge ne fonctionne que si l'utilisateur appuie sur la moitié inférieure et non sur la moitié supérieure.

 enter image description here

J'imagine que c'est parce que l'en-tête est plus bas dans la hiérarchie que le nom, mais il serait difficile pour moi de changer cela sans traiter avec un tas de contraintes. 

J'ai également essayé de définir nameView.hidden = true, mais cela ne fonctionne pas. 

10
vk2015

Si vous souhaitez amener une sous-vue au premier plan, vous pouvez utiliser:

MISE À JOUR Swift 4

self.view.bringSubviewToFront(yourView)

MISE À JOUR Swift 3

self.view.bringSubview(toFront: yourView)

Envoyer la vue à l'arrière: -

MISE À JOUR Swift 4

self.view.sendSubviewToBack(yourView)

MISE À JOUR Swift 3

self.view.sendSubview(toBack: yourView)
26
Chathuranga Silva

Vous pouvez contrôler l’ordre des sous-vues à l’aide des méthodes: bringSubviewToFront et sendSubviewToBack dans la vue supérieure. 

Vous pouvez accéder à toutes les sous-vues contenues dans superview à l'aide du tableau self.view.subview.

4
tosha

Dans Swift 4.2

Pour amener une sous-vue au premier plan

self.view.bringSubviewToFront(yourView)

Pour envoyer une sous-vue à l'arrière

self.view.sendSubviewToBack(yourView)
2
Vinoth Vino

La méthode a été mise à jour depuis Swift 3

Ce qui a fonctionné pour moi et j'espère pour vous, c'est d'utiliser:

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

Vous pouvez également utiliser ce qui suit pour envoyer l'objet qui se trouve à l'avant:

YourView.sendSubview(toBack: yourelementC)

J'espère que ça aide

1
K-A