2011-10-08 13 views
36

He subclasificado UIView y le he añadido un método drawRect. Luego defino una vista usando esta clase personalizada y le agrego subvistas.drawRect en la parte superior de las subvistas

El problema es que drawRect parece dibujar cosas debajo de las subvistas (por lo tanto no visibles).

Quiero cosas que drawRect dibujan aparecen sobre las subvistas de mi personalizado UIView.

¿Esto es posible?

+0

Por favor dé un ejemplo (posiblemente imágenes?) De lo que está tratando de lograr. Parece que quieres dibujar primero el contenido de las subvistas y el "fondo", pero no estoy seguro. – jrturton

+0

Gran pregunta, gracias por mantenerlo conciso. –

Respuesta

28

Siempre se dibujará una subvista en la parte superior de su supervista.

Dependiendo de sus requisitos específicos, puede necesitar tener una UIView simple como vista de fondo/contenedor, con sus subvistas existentes allí, y luego su vista personalizada como otra subvista agregada a la parte superior, por lo que tiene la el más alto orden Z.

Esto funcionaría, por ejemplo, si su vista personalizada fuera una superposición de cuadrícula que debería estar encima de todo lo demás. La vista personalizada debería ser no opaca con un color de fondo claro.

9

No, Las subvistas siempre aparecen encima de su contenedor. Nada le impide hacer las subvistas (parcialmente) transparentes, por supuesto.

Si desea dibujar arriba, coloque otra subvista transparente como la subvista superior en el contenedor y dibuje esa. Si deshabilita la interacción del usuario en él, no interferirá con su manejo táctil.

+0

También vale la pena señalar que esta refactorización forzada (a una nueva UIView o vistas) ayudará a la legibilidad, en la mayoría de los casos. +1 –

Cuestiones relacionadas