J'ai une instance de MKMapViewet je voudrais utiliser des icônes d'annotation personnalisée au lieu des icônes de broches standard fournis par MKPinAnnotationView. Donc, j'ai installé une sous - classe de MKAnnotationView appelé CustomMapAnnotation et je suis PRÉPONDÉRANTS -(void)drawRect:de tirer un CGImage. Cela marche.
Le problème vient quand je tente de reproduire la .animatesDropfonctionnalité fournie par MKPinAnnotationView; J'aimerais que mes icônes apparaissent peu à peu, larguée d' en haut et pour à droite à gauche, lorsque les annotations sont ajoutées à l' MKMapViewinstance.
Voici - (void) drawRect: pour CustomMapAnnotation, qui fonctionne lorsque vous dessinez la UIImage (qui est ce que la 2ème ligne fait):
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
[((Incident *)self.annotation).smallIcon drawInRect:rect];
if (newAnnotation) {
[self animateDrop];
newAnnotation = NO;
}
}
Le problème vient quand vous ajoutez la animateDropméthode:
-(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:@];
}
Il ne fonctionne pas seulement, et il pourrait y avoir beaucoup de raisons. Je ne vais pas entrer dans tous maintenant. La principale chose que je voulais savoir est si l'approche est de son du tout, ou si je devais essayer quelque chose de tout à fait différent.
J'ai aussi essayé d'emballer le tout dans une opération d'animation afin que le paramètre BeginTime pourrait en fait travailler; cela semblait ne rien faire du tout. Je ne sais pas si cela est parce que je manque un point clé ou que ce soit parce que MapKit est bousiller mes animations en quelque sorte.
// Does nothing
[CATransaction begin];
[map addAnnotations:list];
[CATransaction commit];
Si quelqu'un a une expérience avec MKMapAnnotations animés comme cela, j'aimerais quelques conseils, sinon, si vous pouvez offrir CAAnimation des conseils sur l'approche, ce serait génial aussi.













