Ik heb een exemplaar van MKMapViewen wilt gepersonaliseerde annotatie iconen in plaats van de standaard pin pictogrammen door MKPinAnnotationView geleverd te gebruiken. Dus, ik heb opstelling een subklasse van MKAnnotationView genaamd CustomMapAnnotation en ben dwingende -(void)drawRect:een CGImage trekken. Dit werkt.
Het probleem komt wanneer ik probeer om het repliceren .animatesDropvan MKPinAnnotationView geleverde functionaliteit; Ik zou graag voor mijn pictogrammen om geleidelijk verschijnen, daalde van boven en van links naar rechts orde, wanneer de annotaties worden toegevoegd aan de MKMapViewinstantie.
Hier is - (void) drawRect: voor CustomMapAnnotation, die werkt als je de UIImage (dat is wat de 2e lijn doet) gewoon te trekken:
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
[((Incident *)self.annotation).smallIcon drawInRect:rect];
if (newAnnotation) {
[self animateDrop];
newAnnotation = NO;
}
}
Het probleem komt wanneer u de toe te voegen 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:@];
}
Het werkt gewoon niet werken, en er zou een heleboel redenen waarom zijn. Ik zal nu niet te krijgen in elk van hen. Het belangrijkste wat ik wil weten is of de aanpak is het geluid helemaal niet, of als ik iets heel anders moeten proberen.
Ik heb ook geprobeerd te verpakken van de hele zaak in een animatie transactie, zodat de parameter beginTime eigenlijk zou kunnen werken; dit leek helemaal niets dat niet doen. Ik weet niet of dit is omdat ik mis een aantal belangrijke punt, of dat het is omdat MapKit een of andere manier vernielen mijn animaties.
// Does nothing
[CATransaction begin];
[map addAnnotations:list];
[CATransaction commit];
Als iemand ervaring met het geanimeerde MKMapAnnotations als dit, zou ik graag enkele tips, anders als je CAAnimation advies over de aanpak kan bieden, dat zou te groot zijn.













