Ist es möglich, eine eigene zu erstellen, animierte MKAnnotationView?

stimmen
3

Ich versuche, den Standort des Nutzers Animation in MapKit zu simulieren (wo-durch die Position des Benutzers wird durch einen pulsierenden blauen Punkt dargestellt). Ich habe eine benutzerdefinierte Unterklasse von MKAnnotationView und in der drawRect Methode habe ich durch eine Reihe von Farben zu Zyklus versucht bin. Hier ist eine einfachere Implementierung, was ich tue:

- (void)drawRect:(CGRect)rect {
float magSquared = event.magnitude * event.magnitude;
CGContextRef context = UIGraphicsGetCurrentContext();
if (idx == -1) {
    r[0] = 1.0; r[1] = 0.5; r[2] = 0;
    b[0] = 0; b[1] = 1.0; b[2] = 0.5;
    g[0] = 0.5; g[1] = 0; g[2] = 1.0;
    idx = 0;
}
// CGContextSetRGBFillColor(context, 1.0, 1.0 - magSquared * 0.015, 0.211, .6);
CGContextSetRGBFillColor(context, r[idx], g[idx], b[idx], 0.75);
CGContextFillEllipseInRect(context, rect);
idx++;
if (idx > 3) idx = 0;
}

Leider führt dies nur die Anmerkungen eines der drei verschiedenen Farben sein und nicht durchlaufen sie. Gibt es eine Möglichkeit, die MKAnnotations zu zwingen, immer wieder so neu zu zeichnen, dass sie animiert zu sein scheint?

Veröffentlicht am 21/04/2010 um 14:47
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
4

Sie sind frei rufen setNeedsDisplayauf Anmerkungsansicht , wenn Sie es neu zu zeichnen möchten. Der einfachste Weg , dies zu tun , wäre für die Anmerkungsansicht selbst einen Timer einrichten, die alle 1 / 60stel Sekunde oder so gebrannt.

Ein anspruchsvollerer Ansatz wäre die Zeichnung Code in eine Gewohnheit setzen CALayerund eine sich wiederholende Core Animation Animation für sie gelten. Siehe meine Antwort auf „Animieren eine benutzerdefinierte Eigenschaft von CALayer Unterklasse“ für eine Annäherung.

Beantwortet am 21/04/2010 um 15:22
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more