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.