Ich habe eine Instanz MKMapViewund möchten benutzerdefinierte Anmerkung Symbole verwenden , anstatt die Standard - Stift von MKPinAnnotationView geliefert Symbole. Also, ich habe Setup eine Unterklasse von MKAnnotationView genannt CustomMapAnnotation und ist überschreibt -(void)drawRect:eine CGImage zu ziehen. Das funktioniert.
Das Problem kommt , wenn ich versuche , die zu replizieren .animatesDropFunktionalität von MKPinAnnotationView geliefert; Ich würde gerne für meine Symbole allmählich erscheinen, von oben fallen gelassen und in von links nach rechts um, wenn die Anmerkungen zu den hinzugefügt werden MKMapViewInstanz.
Hier ist - (void) drawRect: für CustomMapAnnotation, die funktioniert, wenn Sie nur die UIImage ziehen (das ist, was die zweite Zeile der Fall ist):
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
[((Incident *)self.annotation).smallIcon drawInRect:rect];
if (newAnnotation) {
[self animateDrop];
newAnnotation = NO;
}
}
Das Problem kommt , wenn Sie die Add - animateDropMethode:
-(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:@];
}
Es funktioniert einfach nicht, und es könnte eine Menge Gründe, warum. Ich werde jetzt nicht in allen von ihnen bekommen. Die Hauptsache ich will ich wissen, ist, wenn der Ansatz Ton überhaupt, oder wenn ich etwas ganz anderes versuchen sollte.
Ich habe auch versucht, das Ganze in eine Animation Transaktion zu verpacken, so dass die Begintime Parameter könnten tatsächlich funktionieren; dies schien überhaupt nichts zu tun. Ich weiß nicht, ob dies ist, weil ich einige wichtige Punkt bin fehlt oder ob es ist, weil MapKit meine Animationen irgendwie Wegwerfen.
// Does nothing
[CATransaction begin];
[map addAnnotations:list];
[CATransaction commit];
Wenn jemand irgendwelche Erfahrungen mit animierten MKMapAnnotations wie dieses hat, würde ich einige Hinweise lieben, sonst, wenn Sie CAAnimation Beratung auf dem Ansatz bieten kann, das wäre toll zu.













