Sto sottoclassi un UIView e sovrascrivo il metodo drawRect. Sto notando che il drawrect della vista viene chiamato solo quando la vista viene caricata per la prima volta. Dopo questo non viene mai più chiamato. Come posso essere sicuro che venga chiamato dopo un cambio di orientamento? Ho provato a chiamare setNeedsDisplay sulla vista prima e dopo la rotazione e questo non lo fa.iPhone SDK: come attivare drawRect sulla sottoclasse UIView dopo il cambio di orientamento?
18
A
risposta
57
[myView setContentMode:UIViewContentModeRedraw];
È possibile impostare questo nel IB pure (vale a dire, la modalità impostata su "ridisegnare")
8
Questo era un bug relativo a qualcosa di completamente diverso. setNeedsDisplay causa infatti il richiamo di drawRect.
+0
Sì 'setNeedsDisplay:' attiverà un nuovo aggiornamento, ma richiede al programmatore di invocarlo esplicitamente. 'setContentMode: 'attiverà automaticamente un ridisegno su un cambio di orientamento. – wcochran
0
Per rispondere a questa e le altre 94.000 domande la classica relative alla vista di rotazione/drawRect funky,
-(id)initWithFrame:(CGRect)frame
{
if(self=[super initWithFrame:frame]) {
self.autoresizesSubviews=YES;
self.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
}
return self;
}
Problemi correlati
- 1. Sottoclasse UIView: drawRect non chiamato
- 2. Restore ActionMode dopo il cambio di orientamento
- 3. Benchmark UIView drawRect: metodo
- 4. Sottoclasse UIView disegna lo sfondo nonostante drawRect completamente vuoto: - perché?
- 5. Richiesta di autorizzazione duplicata dopo il cambio di orientamento
- 6. Creazione di una sottoclasse UIView in grado di attivare segues
- 7. getActivity() nel frammento è nullo dopo il cambio di orientamento
- 8. showSoftInput non funziona dopo il cambio di orientamento
- 9. Cambio di orientamento in Honeycomb
- 10. Il contenuto della scheda rimane visibile dopo aver modificato la scheda dopo il cambio di orientamento
- 11. Modifiche di Autoapprendimento programmatico all'interno di UITableViewCell aggiornate solo dopo il cambio di orientamento
- 12. sfondo trasparente UIView drawRect cerchio
- 13. cambio locale Android nel cambio di orientamento
- 14. UIPopOversamento e cambio di orientamento
- 15. ViewPager + FragmentStatePagerAdapter + cambio di orientamento
- 16. cambio orientamento senza chiamata onCreate
- 17. Sottoclasse UIView di iOS, disegnare il testo trasparente sullo sfondo
- 18. iPhone: perché non viene richiamato drawRect?
- 19. Sottoclasse UIView initWithFrame non viene chiamato?
- 20. Frammenti Android ricreati sul cambio di orientamento
- 21. Disegno UIView personalizzato con layoutSubviews vs drawRect
- 22. Metodo Quartz 2D drawRect (iPhone)
- 23. Come cambio la dimensione di UIView?
- 24. Il campo ora di Android TimePicker scompare dopo il cambio di orientamento
- 25. Come ricaricare i frammenti nel backstack dopo il cambio di orientamento
- 26. Salvataggio di un backstack attraverso il cambio di orientamento
- 27. UITapGestureRecognizer non viene attivato nella sottoclasse UIView
- 28. Livello UIView angoli arrotondati e -drawRect:
- 29. Il frammento saveInstanceState viene considerato nullo dopo il cambio di orientamento
- 30. Ottimizzazione dell'applicazione di disegno (con un tocco delle dita) per iPhone SDK
Questo è il modo preferito. – yuji
Vedere la risposta dell'autore originale qui sotto. setNeedsDisplay è davvero la giusta chiamata al metodo. –
'setNeedsDisplay:' viene utilizzato quando si desidera attivare un ridisegno a livello di codice. Quando si desidera che le modifiche all'orientamento attivino un aggiornamento, 'setContentMode:' è il ticket. – wcochran