Envoyer par programme aux éléments avant / arrière créés à partir du générateur d'interface


84

Dans le constructeur d'interface, il y a des options de mise en page pour envoyer à l' arrière ou à l' avant d' envoyer des éléments tels que UIButton, UIImage, UILabeletc ...

Maintenant, je voudrais faire la même chose au moment de l'exécution, par programme.

Y a-t-il un moyen facile de le faire?

Je ne veux pas créer différentes vues, il suffit de mettre à jour l'axe z.

Réponses:


192

Il existe un certain nombre de méthodes UIViewpermettant de modifier la hiérarchie des vues.

Puisque vos vues sont déjà insérées dans votre supervision, vous pouvez facilement appeler bringSubviewToFront:une fois pour chaque vue dans l'ordre de votre choix.


Êtes-vous en train de dire que je ne peux pas envoyer directement un UIButton vers l'avant / l'arrière? Je dois créer une vue et l'ajouter à cette vue. Ensuite, utilisez les méthodes ci-dessus? Si tel est le cas, la classe de contrôleurs est-elle l'endroit pour créer une telle vue?
Yohann T.

11
Un UIButton est une sous-classe de UIView. Appelez simplement: [[myButton superview] bringSubviewToFront: myButton];
Sebastian Celis

Juste pour dissiper un petit doute que j'avais: si vous insérez une sous-vue qui est déjà dans la hiérarchie des vues, le système d'exploitation ne bougera que sa position. Ainsi, l'insertion tant que la vue existe ne causera aucune surcharge.
olivaresF

"appelez bringSubviewToFront:une fois pour chaque vue dans l'ordre de votre choix" c'est vraiment un truc. Bon.
Ans

43

Vous pouvez utiliser:

[self.view bringSubviewToFront:myButton];
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.