Czy to możliwe, aby utworzyć niestandardowy, animowany MKAnnotationView?

głosy
3

Próbuję symulować animację lokalizacji użytkownika w MapKit (gdzie po położeniu użytkownika jest reprezentowana przez pulsującą niebieską kropką). I utworzeniu niestandardowego podklasa MKAnnotationView aw metodzie drawRect mam próby cyklu poprzez zestaw kolorów. Oto prostsze wdrożenie co robię:

- (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;
}

Niestety to właśnie powoduje, że adnotacje być jeden z 3 różnych kolorach, a nie cykl przez nich. Czy istnieje sposób, aby zmusić MKAnnotations stale przerysować tak, że wydaje się być animowany?

Utwórz 21/04/2010 o 14:47
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
4

Jesteś wolny, aby zadzwonić setNeedsDisplayna widoku opisu, gdy chcesz go przerysować. Najprostszym sposobem na to byłoby na sam widok adnotacji ustawić timer, który opalane co 1/60 sekundy lub tak.

Bardziej wyrafinowane podejście byłoby umieścić swój kod rysowania w zwyczaju CALayeri zastosować powtarzający Animacja Rdzeń do niego. Zobacz moją odpowiedź na „Animowanie właściwość niestandardową CALayer podklasy” na podejście.

Odpowiedział 21/04/2010 o 15:22
źródło użytkownik

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