84 votes

Envoi programmé aux éléments avant/arrière créés à partir du constructeur d'interface

Dans le constructeur d'interface, il existe des options de mise en page pour envoyer à l'arrière ou à l'avant tout élément tel que UIButton , UIImage , UILabel etc...

Maintenant, je voudrais faire la même chose au moment de l'exécution, de manière programmatique.

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

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

192voto

Sebastian Celis Points 7284

Il existe un certain nombre de méthodes pour UIView qui vous permettent de modifier la hiérarchie des vues.

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

0 votes

Vous voulez dire que je ne peux pas envoyer directement un UIButton à front/back ? Je dois créer une vue et l'ajouter à cette vue. Puis utiliser les méthodes ci-dessus ? Si c'est le cas, la classe contrôleur est-elle le bon endroit pour créer une telle vue ?

11 votes

Un UIButton est une sous-classe de UIView. Il suffit d'appeler : [[myButton superview] bringSubviewToFront:myButton] ;

0 votes

Pour lever un petit doute que j'avais : si vous insérez une vue secondaire qui se trouve déjà dans la hiérarchie des vues, l'OS ne déplacera que sa position. Ainsi, l'insertion tant que la vue existe n'entraînera pas de surcharge.

43voto

hanumanDev Points 2649

Vous pourriez utiliser :

[self.view bringSubviewToFront:myButton];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X