Est-il possible de créer une coutume, animée MKAnnotationView?

voix
3

Je suis en train de simuler l'emplacement de l'utilisateur dans l'animation MapKit (où par la position de l'utilisateur est représenté par un point bleu pulsante). J'ai créé une sous-classe personnalisée de MKAnnotationView et dans la méthode drawRect je tente de faire défiler un ensemble de couleurs. Voici une mise en œuvre plus simple de ce que je fais:

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

Malheureusement, cela fait juste les annotations d'être l'une des 3 couleurs différentes et ne pas faire défiler eux. Y at-il un moyen de forcer les MKAnnotations à redessiner sans cesse afin qu'il semble être animé?

Créé 21/04/2010 à 14:47
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
4

Vous êtes libre d'appeler setNeedsDisplayvotre point de vue d'annotation chaque fois que vous le souhaitez redessiner. La meilleure façon de le faire serait le point de vue d'annotation elle - même de mettre en place une minuterie qui a tiré tous les 1 / 60e de seconde ou plus.

Un code approche plus sophistiquée serait de mettre votre dessin dans une coutume CALayeret d' appliquer une animation répétitive Core Animation à elle. Voir ma réponse à « Animer une propriété personnalisée de la sous - classe CALayer » pour une approche.

Créé 21/04/2010 à 15:22
source utilisateur

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