Jeg har en forekomst av MKMapViewog ønsker å bruke tilpasset merknad ikoner i stedet for standard pinne ikonene levert av MKPinAnnotationView. Så, jeg har setup en underklasse av MKAnnotationView kalt CustomMapAnnotation og er overordnet -(void)drawRect:å tegne en CGImage. Dette fungerer.
Problemet kommer når jeg prøver å gjenskape den .animatesDropfunksjonalitet levert av MKPinAnnotationView; Jeg ville elske for mine ikoner til seg gradvis, falt ovenfra og fra venstre mot høyre for når merknadene er lagt til MKMapVieweksempel.
Her er - (void) drawRect: for CustomMapAnnotation, som fungerer når du bare trekke UIImage (som er hva andre linjen gjør):
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
[((Incident *)self.annotation).smallIcon drawInRect:rect];
if (newAnnotation) {
[self animateDrop];
newAnnotation = NO;
}
}
Problemet kommer når du legger til animateDropmetoden:
-(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:@];
}
Det virker bare ikke, og det kan være mange grunner til hvorfor. Jeg vil ikke komme inn på alle av dem nå. Det viktigste jeg ønsker å vite er om tilnærmingen er lyd i det hele tatt, eller om jeg bør prøve noe helt annet.
Jeg prøvde også å pakke opp hele greia i en animasjon transaksjonen, slik at beginTime parameter kan faktisk fungerer; dette syntes å ikke gjøre noe i det hele tatt. Jeg vet ikke om dette er fordi jeg mangler noen sentrale punkt, eller om det er fordi MapKit er å kaste mine animasjoner eller annen måte.
// Does nothing
[CATransaction begin];
[map addAnnotations:list];
[CATransaction commit];
Hvis noen har noen erfaring med animerte MKMapAnnotations som dette, vil jeg gjerne noen hint, ellers hvis du kan tilby CAAnimation råd på tilnærming, det ville være flott også.













