Is het mogelijk om een ​​aangepaste, geanimeerde MKAnnotationView creëren?

stemmen
3

Ik ben op zoek naar de locatie van de gebruiker animatie in MapKit (waar-door de positie van de gebruiker wordt vertegenwoordigd door een pulserende blauwe stip) te simuleren. Ik heb een aangepaste subklasse van MKAnnotationView gemaakt en in het drawRect methode Ik probeer om door een reeks van kleuren. Hier is een eenvoudiger uitvoering van wat ik doe:

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

Helaas is dit gewoon zorgt ervoor dat de annotaties bij een van de 3 verschillende kleuren zijn en niet doorlopen hen. Is er een manier om de MKAnnotations dwingen om voortdurend opnieuw te tekenen, zodat het lijkt te worden geanimeerd?

De vraag is gesteld op 21/04/2010 om 14:47
bron van user
In andere talen...                            


1 antwoorden

stemmen
4

Je bent vrij om te bellen setNeedsDisplayop uw annotatie weergave wanneer u wilt dat het opnieuw te tekenen. De eenvoudigste manier om dit te doen zou zijn voor de annotatie uitzicht zelf het opzetten van een timer die elke 1 / 60e van een seconde of zo ontslagen.

Een meer verfijnde aanpak zou zijn om uw tekening code in een aangepaste zetten CALayeren toe te passen een herhalende Core Animation animatie aan. Zie mijn antwoord op "animatie van een aangepaste eigenschap van CALayer subklasse" voor een aanpak.

antwoordde op 21/04/2010 om 15:22
bron van user

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