Ho un'istanza di MKMapView
e vorrei utilizzare icone di annotazione personalizzate al posto delle icone di pin standard fornite da MKPinAnnotationView. Quindi, ho creato una sottoclasse di MKAnnotationView chiamata CustomMapAnnotation e sto sostituendo -(void)drawRect:
per disegnare un CGImage. Questo funziona.Come posso creare un'animazione "pin-drop" personalizzata usando MKAnnotationView?
Il problema si presenta quando provo a replicare la funzionalità .animatesDrop
fornita da MKPinAnnotationView; Mi piacerebbe che le mie icone appaiano gradualmente, cadute dall'alto e nell'ordine da sinistra a destra, quando le annotazioni vengono aggiunte all'istanza MKMapView
.
Ecco - (void) drawRect: per CustomMapAnnotation, che funziona solo quando si disegna l'UIImage (che è ciò che il 2 ° riga fa):
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
[((Incident *)self.annotation).smallIcon drawInRect:rect];
if (newAnnotation) {
[self animateDrop];
newAnnotation = NO;
}
}
Il guaio arriva quando si aggiunge il metodo animateDrop
:
-(void)animateDrop {
CGContextRef myContext = UIGraphicsGetCurrentContext();
CGPoint finalPos = self.center;
CGPoint startPos = CGPointMake(self.center.x, self.center.y-480.0);
self.layer.position = startPos;
CABasicAnimation *theAnimation;
theAnimation=[CABasicAnimation animationWithKeyPath:@"position"];
theAnimation.fromValue=[NSValue valueWithCGPoint:startPos];
theAnimation.toValue=[NSValue valueWithCGPoint:finalPos];
theAnimation.removedOnCompletion = NO;
theAnimation.fillMode = kCAFillModeForwards;
theAnimation.delegate = self;
theAnimation.beginTime = 5.0 * (self.center.x/320.0);
theAnimation.duration = 1.0;
[self.layer addAnimation:theAnimation forKey:@""];
}
Semplicemente non funziona, e potrebbero esserci molti motivi per cui. Non voglio entrare in tutti loro ora. La cosa principale che voglio sapere è se l'approccio è corretto, o se dovrei provare qualcosa di completamente diverso.
Ho provato anche a impacchettare il tutto in una transazione di animazione in modo che il parametro beginTime potesse effettivamente funzionare; questo sembrava non fare nulla. Non so se questo è perché mi manca qualche punto chiave o se è perché MapKit sta distruggendo le mie animazioni in qualche modo.
// Does nothing
[CATransaction begin];
[map addAnnotations:list];
[CATransaction commit];
Se qualcuno ha qualche esperienza con MKMapAnnotations animati come questo, mi piacerebbe alcuni suggerimenti, altrimenti se si può offrire consigli CAAnimation sull'approccio, che sarebbe troppo grande.
Grazie ~ questo funziona per me – ludo
Puoi aiutarmi nel mio problema .. Devo mostrare 4 righe di dati in quella bolla ... Come un titolo ... quindi descrizione, data, nome della posizione .. Tutti gli esempi mostrando solo 2 linee di dettagli. Ho provato ad aggiungere dati ricercati nel sottotitolo e separati da un carattere \ n. Ma non ha funzionato .. Plz help me –
Sijo, dai un'occhiata a questo. http://stackoverflow.com/questions/1350050/custom-mkannotationview-callout –