En mi aplicación, intento traer una subvista al frente, luego volver a ponerla en su posición de capa original más adelante. El código debe ser bastante simple:Reordenar las subvistas de UIView
Para llevar a la subvista frontal (dentro de mi clase UIView personalizado):
[self.superview bringSubviewToFront:self];
fácil. Guardo la posición z original en una variable de instancia llamada, lo adivinaste, zPosition
. Así, la línea antes de -bringSubviewToFront:
es:
zPosition = [self.superview.subviews indexOfObject:self];
Por lo tanto, todo el código que utilizo para llevar a mi subvista a delante es:
zPosition = [self.superview.subviews indexOfObject:self];
[self.superview bringSubviewToFront:self];
Esto funciona como debería. El problema es cuando trato de volver a colocar la subvista donde estaba. Simplemente estoy haciendo esto:
[self.superview exchangeSubviewAtIndex:zPosition withSubviewAtIndex:
[self.superview.subviews indexOfObject:self]];
Usando este código, si tengo dos subvistas, esto es lo que sucede:
Digamos que tengo la vista A y B. Vista Vista A es superior ver B. Toco ver B, viene al frente. Toco la vista B otra vez (debe volver a donde estaba), y no pasa nada, por lo que ahora está en la vista A. Si ahora toco la vista A, viene al frente, pero cuando lo toco de nuevo (por lo que debería vuelve a su posición z original: debajo de la vista B), todas las vistas de hermanos desaparecen.
¿Alguien ve lo que podría estar causando este problema?
tal vez usted puede comenzar con un maniquí, subvista vacío en la parte superior. Luego cambias hacia adelante y hacia atrás con esa subvista. No es el más elegante, lo sé ... –