2010-03-15 24 views
9

Ho un codice di disegno personalizzato in drawRect che esegue anche alcuni calcoli di dimensioni.Quando viene chiamato 'drawRect'?

Quando è il più presto posso essere sicuro che questo codice è stato caricato, ad es. se voglio modificare la dimensione dei contenitori di conseguenza?

risposta

1

Poco prima viene visualizzata la vista o quando si chiama

[aView setNeedsDisplay]; 
+0

Ma c'è qualche richiamata in questa fase? – Egil

+0

No, dovrai mettere qualcosa nel metodo drawRect per quello. –

3

-[NSView viewWillDraw] è un posto ragionevole per il layout all'ultimo minuto.

+0

questo esiste su iphone? – Egil

+0

Penso che intenda viewWillAppear - e succede ogni volta che appare la vista. viewWillDisappear è la corrispondente funzione di uscita. –

+0

Ma "wouldappear" non verrebbe chiamato prima di "disegnare"? – Egil

2

Ho un codice di disegno personalizzato in drawRect che esegue anche alcuni calcoli di dimensioni.

Quando è il più presto posso essere sicuro che questo codice è stato caricato, ad es. se voglio modificare la dimensione dei contenitori di conseguenza?

Un oggetto non può esistere fino a quando la sua classe non è completamente caricata. Se si dispone di un'istanza, la classe in cui si trova un'istanza viene caricata completamente, poiché non si avrebbe un'istanza di essa se non lo fosse.

Per quando viene chiamato: viene chiamato quando è necessario disegnare. Questo normalmente accade come parte del ciclo degli eventi, se qualcosa ha contrassegnato la vista come se fosse necessaria la visualizzazione. È possibile comunicare direttamente a NSView, ma, per quanto posso dire, questo non è possibile per UIViews.

Quindi, se hai bisogno di fare qualcosa prima che gli venga detto, fallo subito dopo averlo creato o, se stai per impostare la vista come necessario, fallo prima di farlo.

0

Ho appena creato la mia prima app customView. Questa era una delle mie domande. il mio metodo drawRect è stato chiamato una volta al momento di creare la mia finestra (o ricreare). E milioni di volte quando ridimensiono la mia finestra.

Problemi correlati