iphone objective-c core-graphics drawrect

iphone - dibujar fuera de los límites de UIView desde drawRect



objective-c core-graphics (1)

Mi pregunta es muy similar a esta. No dibuja fuera de los límites cuando clipToBounds = NO, que no recibió una respuesta clara.

Básicamente tengo una vista UIV, y quiero dibujar una línea desde el centro hasta el borde de la pantalla. Calcular dónde están estos puntos es fácil, usando [self convertPoint:(CGPoint){0,0} fromView:[self superview]]; (que encuentra el origen con respecto a la vista supervisada de mi vista. Pero cuando trazo una línea desde el dibujo de mi vista: se recorta en los límites de mi vista.

¿Hay alguna forma de dibujar fuera de los límites de mi vista? He intentado cambiar la propiedad clipsToBounds, pero no parece tener ningún efecto.

No puedo dibujar mis líneas en la vista de supervisión porque necesito hacer esto con varias vistas y algunas estarán frente a otras ... descubrir la capa a partir del drawRect de la vista de supervisión parece una mala idea.

Del mismo modo, no creo que solo pueda cambiar el tamaño de los límites de mi vista para incluir toda la pantalla, ya que mis vistas deben tener un tamaño dinámico ... los límites deberían ser ENORMES (> 20,000 puntos cuadrados) para que esto funcione .


No recomendaría nunca dibujar fuera de los límites de una vista. O su vista necesita cambiar de tamaño automáticamente para incluir su dibujo o necesita tener vistas superpuestas transparentes. O ambos. No puedo pensar en una situación que ninguno de estos casos pudiera cubrir, pero puede que me falte la imaginación. =)

Probablemente, lo que está sucediendo actualmente es que cuando la súper vista se vuelve a dibujar, le dice a la súper vista que necesita volver a dibujar, lo que resulta en el borrado del dibujo que está haciendo afuera. Ha pasado un tiempo, cualquier persona con más conocimientos puede (debería!) Corregirme aquí si me equivoco.

No sé si "Quartz Debug" (de la instalación estándar de herramientas de desarrollo de Apple, /Developer/Applications/Performance Tools/Quartz Debug ) funciona en el simulador, pero vale la pena intentarlo. Tiene un modo que le mostrará cuándo y con qué frecuencia se realiza el redibujado, con un borde y un retraso opcional en las actualizaciones.

Puede hacer lo que está pidiendo, pero debe forzar el rediseño de sus subvistas cada vez que salga de los límites de la subvista, lo que significa que su supervisión debe dibujar manualmente a sus hijos dentro de su función de dibujo. Esencialmente, estarías desechando el paradigma de dibujo de Apple y simplemente haciendo que tus sub-vistas actúen como una extensión de dibujo de tu vista principal de todos modos.

Además, si sus rangos son tan dinámicos, es posible que desee considerar dibujar porcentajes de la pantalla o supervisión en lugar de en puntos, puede tener más sentido codificar.