E 'possibile creare un costume, animato MKAnnotationView?

voti
3

Sto cercando di simulare l'animazione posizione dell'utente in MapKit (dove-by la posizione dell'utente è rappresentata da un punto blu pulsante). Ho creato una sottoclasse personalizzata di MKAnnotationView e nel metodo drawRect Sto tentando di passare da un set di colori. Ecco un'implementazione più semplice di quello che sto facendo:

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

Purtroppo questo solo fa sì che le annotazioni di essere uno dei 3 colori differenti e non lo fa passare da loro. C'è un modo per forzare le MKAnnotations per ridisegnare continuamente in modo che sembra essere animato?

È pubblicato 21/04/2010 alle 14:47
fonte dall'utente
In altre lingue...                            


1 risposte

voti
4

Siete liberi di chiamare setNeedsDisplaysul tuo vista annotazione ogni volta che si desidera ridisegnare. Il modo più semplice per farlo sarebbe per la vista annotazione in sé per impostare un timer che ha sparato ogni 1/60 ° di secondo o giù di lì.

Un approccio più sofisticato sarebbe quello di mettere il vostro codice di disegno in un personalizzato CALayere applicare una ripetizione di animazione Core Animation ad esso. Vedere la mia risposta a "Animazione di una proprietà personalizzata di CALayer sottoclasse" per un approccio.

Risposto il 21/04/2010 a 15:22
fonte dall'utente

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