2010-03-15 29 views
9

Ich habe einige benutzerdefinierte Zeichnungscode in drawRect, die auch einige Berechnung von Größen durchführt.Wann wird 'drawRect' aufgerufen?

Wann ist der früheste ich kann sicher sein, dass dieser Code geladen wurde, z. wenn ich seine Behältergröße entsprechend ändern möchte?

Antwort

1

Kurz vor der Ansicht angezeigt wird oder wenn Sie anrufen

[aView setNeedsDisplay]; 
+0

Aber gibt es zu diesem Zeitpunkt einen Rückruf? – Egil

+0

Nein, du musst dafür etwas in die drawRect-Methode einfügen. –

3

-[NSView viewWillDraw] ist ein angemessener Ort für Last-Minute-Layout.

+0

dies existiert auf iphone? – Egil

+0

Ich denke, er meint viewWillAppear - und es passiert jedes Mal, wenn die Ansicht erscheint. viewWillDisappear ist die entsprechende Exit-Funktion. –

+0

Aber würde 'WilleAppear' nicht vor 'draw' aufgerufen werden? – Egil

2

Ich habe einige benutzerdefinierte Zeichnung Code in DrawRect, die auch einige Berechnung der Größen durchführt.

Wann ist der früheste ich kann sicher sein, dass dieser Code geladen wurde, z. wenn ich seine Behältergröße entsprechend ändern möchte?

Ein Objekt kann erst existieren, wenn seine Klasse vollständig geladen ist. Wenn Sie eine Instanz haben, ist die Klasse, für die sie instanziiert ist, vollständig geladen, weil Sie keine Instanz davon hätten, wenn dies nicht der Fall wäre.

Wie für, wenn es heißt: Es heißt, wenn Sie zeichnen müssen. Dies geschieht normalerweise als Teil der Ereignisschleife, wenn irgendetwas die Ansicht als Anzeige markiert hat. Es ist möglich, ein NSView direkt anzuzeigen, aber, soweit ich das beurteilen kann, ist dies für UIViews nicht möglich.

Also, wenn Sie etwas tun müssen, bevor es dazu aufgefordert wird, tun Sie es entweder sofort nach der Erstellung oder, wenn Sie die Ansicht als Anzeige benötigen, tun Sie es, bevor Sie das tun.

0

Ich habe gerade meine erste customView App erstellt. Das war eine meiner Fragen. Meine DrawRect-Methode wurde einmal beim Erstellen meines Fensters aufgerufen (oder neu erstellt). Und Millionen von Zeit beim Ändern der Größe meines Fensters.

Verwandte Themen