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.

Yohann T.
la source

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.

Sébastien Celis
la source
Ê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];
hanumanDev
la source