2017-02-01 4 views
-2

Wie kann ichWie Aufruf - (void) drawRect: (CGRect) rect

-(void)drawRect:(CGRect)rect 

in https://github.com/stkim1/MTImageMapView/blob/master/MTImageMapView/MTImageMapView.m

von einer anderen UiViewController Periodisch Anruf mit NSTimer

+2

Warum Sie() als Standard-Methode aufrufen müssen drawRect und ruft automatisch während initialisieren. Bitte geben Sie an, warum Sie drawtract() regelmäßig aufrufen müssen. – CodeChanger

+1

Haben Sie eine Instanz dieser Kartenansicht in einer UIView auf Ihrem UIViewController? Rufen Sie einfach 'setNeedsDisplay' in dieser Ansicht auf, und es wird sich um das Neuzeichnen kümmern. Sie sollten nicht direkt auf drawRect zugreifen - es wird von der steuernden Klasse wie erforderlich aufgerufen – Russell

+0

CodeChanger- Eigentlich wollte ich eine Positionsmarker im Zustand anzeigen, und ich muss Marker in einen anderen Zustand mit jeder Sekunde aktualisieren, die ich habe machte eine Logik, um eine Positionsmarkierung zu zeigen und zu welchem ​​Zustand sollte es als nächstes gehen, aber kann die Ansicht nicht aktualisieren – rva

Antwort

3

Vom documentation:

Diskussion

Die Standardimplementierung dieser Methode tut nichts. Unterklassen , die Technologien wie Core Graphics und UIKit zum Zeichnen ihrer Inhalt der Ansicht verwenden, sollten diese Methode überschreiben und ihre Zeichnung Code dort implementieren. Sie müssen diese Methode nicht überschreiben, wenn Ihre Ansicht den Inhalt auf andere Weise auf setzt. Sie müssen diese Methode beispielsweise nicht überschreiben, wenn in Ihrer Ansicht nur eine Hintergrundfarbe angezeigt wird oder wenn in der Ansicht der Inhalt direkt mit dem zugrunde liegenden Ebenenobjekt festgelegt wird.

...

Wenn Sie UIView direkt Unterklasse, Ihre Implementierung dieser Methode rufen nicht super benötigt. Wenn Sie jedoch eine andere Sichtklasse unterklassifizieren, sollten Sie Super an einem bestimmten Punkt in Ihrer Implementierung aufrufen.

Diese Methode wird aufgerufen, wenn eine Ansicht zuerst angezeigt wird oder wenn ein Ereignis auftritt, das einen sichtbaren Teil der Ansicht ungültig macht. Sie sollten niemals diese Methode direkt anrufen. Um einen Teil Ihrer Ansicht ungültig zu machen, , und bewirken Sie, dass dieser Teil neu gezeichnet wird, rufen Sie stattdessen die Methode setNeedsDisplay oder auf.

0

JA Ich fand die Lösung, die ich am Ende einer drawrect Funktion eine Funktion mit Timer nenne und ruft setNeedsDisplay() darin

Verwandte Themen