Si dovrebbe chiamare setNeedsDisplay solo se si ridefinisce drawRect in una sottoclasse di UIView che è fondamentalmente una vista personalizzata che disegna qualcosa sullo schermo, come linee, immagini o forme come un rettangolo.
Quindi è necessario chiamare setNeedsDisplay quando si apportano modifiche a poche variabili da cui dipende questo disegno e per visualizzare tale modifica, è necessario chiamare questo metodo che internamente darà una chiamata a drawRect e ridisegna i componenti.
Quando si aggiunge un imageView o un UIButton come sottoview o si apportano modifiche a qualsiasi sottoview, non è necessario chiamare questo metodo.
Esempio:
Avete una vista che mostra un cerchio in movimento, sia che si tocca e si sposta, o può essere di animazione basato timer. Ora, per questo, avrai bisogno di una vista personalizzata che disegna un cerchio al centro dato e con un raggio dato. Queste sono mantenute come variabili di istanza che vengono modificate per spostare il cerchio cambiando il suo centro o ingrandendolo aumentandone il raggio.
Ora, in questo caso, si modificheranno queste variabili (centro o raggio) in un ciclo e in un timer o potrebbero essere toccate con le dita in mezzo e tocchi i metodi spostati. Per riflettere la modifica di questa proprietà è necessario ridisegnare questa vista per la quale si chiamerà setNeedsDisplay.
fonte
2012-05-30 14:32:23
Lo stesso per dopo cambiare la cornice di un livello o visualizzare all'interno della mia vista la sottoclasse? –