Estoy subclasificando una UIView y sobrescribiendo el método drawRect. Me doy cuenta de que el drawrect de la vista solo se invoca cuando la vista se carga por primera vez. Después de eso nunca se llama nuevamente. ¿Cómo me aseguro de que se llame después de un cambio de orientación? Intenté llamar a setNeedsDisplay en la vista antes y después de la rotación y eso no funciona.iPhone SDK: cómo desencadenar drawRect en la subclase UIView después del cambio de orientación?
18
A
Respuesta
57
[myView setContentMode:UIViewContentModeRedraw];
Puede configurar esto en IB, así (es decir, de modo ajustado en "redibujar")
8
Esto era un error relacionado con algo completamente diferente. setNeedsDisplay hace de hecho llamar a drawRect.
+0
Sí 'setNeedsDisplay:' activará un redibujado, pero requiere que el programador lo invoque explícitamente. 'setContentMode: 'activará automágicamente un redibujado en un cambio de orientación. – wcochran
0
Para responder a esta y las otras 94.000 preguntas semejantes sobre las vistas de rotación/funkiness drawRect,
-(id)initWithFrame:(CGRect)frame
{
if(self=[super initWithFrame:frame]) {
self.autoresizesSubviews=YES;
self.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
}
return self;
}
Cuestiones relacionadas
- 1. UIView subclase: drawRect no se llama
- 2. Cambiando UIView en el cambio de orientación
- 3. Actualizar UIView for drawRect?
- 4. Segunda instancia de actividad después del cambio de orientación
- 5. Fragmentos que no funcionan correctamente después del cambio de orientación
- 6. Android DialogFragment desaparece después del cambio de orientación
- 7. Punto de referencia UIView drawRect: método
- 8. orientación del dispositivo iPhone
- 9. UIView Subclase initWithFrame no se llama?
- 10. UITapGestureRecognizer no se inicia en UIView Subclase
- 11. ¿Cómo obtener la orientación actual de la vista del iPhone o la última orientación del dispositivo?
- 12. iOS 5 UIView drawRect override no funciona en el dispositivo
- 13. Cómo evitar el aumento de ancho después del cambio de orientación en el safari móvil
- 14. SDK de iPhone: Orientación (Vistas de paisaje y retrato)
- 15. Cuándo es - [UIView drawRect:] Método invocado?
- 16. brújula del iphone girando según la orientación
- 17. ¿Cómo verificar la orientación del dispositivo mediante programación en iPhone?
- 18. Descartar de diálogo después del cambio de orientación de la pantalla
- 19. Esquinas redondeadas de la capa UIView y -drawRect:
- 20. cómo detecto la orientación del iPhone antes de girar
- 21. Cómo evitar que drawRect de UIView elimine las rutas dibujadas por llamadas drawRect anteriores?
- 22. La subclase UIView dibuja un fondo a pesar del draw completamente vacíoRect: - ¿por qué?
- 23. no drawRect ser llamado en mi subclase de UIImageView
- 24. orientación actual del dispositivo iphone en ViewDidLoad
- 25. ¿Cómo ocultar un UIView por completo al cambiar de orientación?
- 26. Evitar cambio de orientación en iOS Safari
- 27. Detectar la orientación de la pantalla del iPhone
- 28. iOS: cambio de subclase de UIView a UIScrollView en un guión gráfico
- 29. ¿Cómo extraer UIBarButtonItem Icons del iPhone SDK?
- 30. dibujar fuera de los límites de UIView desde drawRect
Esta es la forma preferida. – yuji
Ver la respuesta del autor original a continuación. setNeedsDisplay es de hecho la llamada al método correcto. –
'setNeedsDisplay:' se usa cuando desea desencadenar programáticamente un redibujado. Cuando desee cambios de orientación para desencadenar un redibujado, 'setContentMode:' es el ticket. – wcochran