¿Es posible crear una costumbre, animada MKAnnotationView?

votos
3

Estoy tratando de simular la animación de la ubicación del usuario en MapKit (donde por la posición del usuario se representa mediante un punto azul pulsante). He creado una subclase personalizada de MKAnnotationView y en el método drawRect Estoy intentando desplazarse a través de un conjunto de colores. Aquí hay una aplicación más simple de lo que estoy haciendo:

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

Por desgracia, esto sólo hace que las anotaciones a ser uno de los 3 colores diferentes y no se hace de una a otra. ¿Hay una manera de forzar a los MKAnnotations volver a dibujar continuamente de manera que parece estar animada?

Publicado el 21/04/2010 a las 14:47
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
4

Usted es libre de llamar setNeedsDisplayen su vista de anotación siempre que lo desee volver a dibujar. La forma más sencilla de hacerlo sería que la misma vista de anotación para configurar un temporizador que disparó cada 1 / 60th de un segundo o menos.

Un enfoque más sofisticado sería poner su código de dibujo en una costumbre CALayery aplicar una repetición de animación Core Animation a ella. Véase mi respuesta a "Animación de una propiedad personalizada de CALayer subclase" de un enfoque.

Respondida el 21/04/2010 a las 15:22
fuente por usuario

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