Enviar programáticamente a elementos frontales / posteriores creados a partir del generador de interfaces

84

En constructor de interfaces, hay opciones de diseño para enviar hacia atrás o de delante enviar a los elementos tales como UIButton, UIImage, UILabeletc ...

Ahora, me gustaría hacer lo mismo en tiempo de ejecución, mediante programación.

¿Existe una forma sencilla de hacerlo?

No quiero crear vistas diferentes, solo actualizo el eje z.

Yohann T.
fuente

Respuestas:

192

Hay varios métodos UIViewque le permiten modificar la jerarquía de vistas.

Dado que sus vistas ya están insertadas en su supervista, puede llamar fácilmente bringSubviewToFront:una vez para cada vista en el orden que desee.

Sebastián Celis
fuente
¿Estás diciendo que no puedo enviar directamente un UIButton al frente / atrás? Tengo que crear una vista y agregarla a esa vista. ¿Entonces usa los métodos anteriores? Si es así, ¿es la clase de controlador el lugar para crear tal vista?
Yohann T.
11
Un UIButton es una subclase de UIView. Simplemente llame: [[myButton superview] bringSubviewToFront: myButton];
Sebastian Celis
Solo para aclarar una pequeña duda que tenía: si inserta una subvista que ya está en la jerarquía de vista, el sistema operativo solo moverá su posición. Por lo tanto, insertar mientras exista la vista no causará ninguna sobrecarga.
olivaresF
"Llame bringSubviewToFront:una vez para cada vista en el orden que desee", eso es realmente un truco. Buena.
Respuesta
43

Podrías usar:

[self.view bringSubviewToFront:myButton];
hanumanDev
fuente