Am un exemplu de MKMapViewși - ar dori să utilizeze pictogramele personalizate de adnotare în loc de pictogramele standard pini furnizate de MKPinAnnotationView. Deci, am setup - o subclasă a MKAnnotationView numit CustomMapAnnotation și sunt imperative -(void)drawRect:pentru a desena un CGImage. Acest lucru funcționează.
Problema vine atunci când încerc să reproducă .animatesDropfuncționalitatea furnizate de MKPinAnnotationView; Mi - ar plăcea pictogramele mele să apară treptat, a scăzut de la mai sus și în stânga la dreapta ordine, atunci când adnotările sunt adăugate la MKMapViewinstanță.
Aici este - (void) drawRect: pentru CustomMapAnnotation, care funcționează atunci când doar trage UIImage (care este ceea ce face linia a 2):
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
[((Incident *)self.annotation).smallIcon drawInRect:rect];
if (newAnnotation) {
[self animateDrop];
newAnnotation = NO;
}
}
Problema vine atunci când adăugați animateDropmetoda:
-(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:@];
}
Pur și simplu nu funcționează, și ar putea exista o mulțime de motive. Nu voi intra în toate dintre ele acum. Principalul lucru pe care eu doresc să știu este dacă abordarea este un sunet, sau dacă ar trebui să încerc ceva cu totul diferit.
Am încercat, de asemenea, la pachet cu totul într-o tranzacție de animație, astfel încât parametrul beginTime ar putea să funcționeze efectiv; acest lucru părea să nu facă nimic. Nu știu dacă acest lucru se datorează faptului că eu sunt lipsesc unele punct-cheie sau dacă este pentru că MapKit este trashing animații mele într-un fel.
// Does nothing
[CATransaction begin];
[map addAnnotations:list];
[CATransaction commit];
Dacă cineva are nici o experiență cu MKMapAnnotations animate, cum ar fi acest lucru, mi-ar plăcea câteva sugestii, în caz contrar, dacă vă poate oferi sfaturi CAAnimation cu privire la modul de abordare, care ar fi prea mare.













