Mam instancję MKMapViewi chciałby wykorzystać niestandardowe ikony adnotacji zamiast standardowych ikon PIN dostarczony przez MKPinAnnotationView. Tak, mam ustawić podklasą MKAnnotationView nazywa CustomMapAnnotation i jestem nadrzędnymi -(void)drawRect:narysować CGImage. To działa.
Problem pojawia się, gdy próbuję replikować .animatesDropfunkcjonalność dostarczonego przez MKPinAnnotationView; Chciałbym, aby moje ikony pojawiają się stopniowo, spadł z góry i od lewej do prawej porządek, gdy adnotacje są dodawane do MKMapViewinstancji.
Oto - (void) drawRect: dla CustomMapAnnotation, który działa, kiedy po prostu narysować UIImage (co właśnie robi 2 linia):
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
[((Incident *)self.annotation).smallIcon drawInRect:rect];
if (newAnnotation) {
[self animateDrop];
newAnnotation = NO;
}
}
Problem pojawia się, gdy dodasz animateDropmetodę:
-(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:@];
}
To po prostu nie działa, i nie może być wiele powodów. Nie będę się w ogóle z nich teraz. Najważniejsze Ja chce wiedzieć, czy podejście jest dźwięk w ogóle, czy powinienem spróbować czegoś zupełnie innego.
Próbowałem też pakować się całość do transakcji animacji tak, że parametr begintime może faktycznie pracują; wydawało się, że nic nie robić w ogóle. Nie wiem, czy to dlatego, że brakuje mi jakiś kluczowy punkt, czy też dlatego, że MapKit jest koszu moje animacje jakoś.
// Does nothing
[CATransaction begin];
[map addAnnotations:list];
[CATransaction commit];
Jeśli ktoś ma jakieś doświadczenia z animowanych MKMapAnnotations jak ten, chciałbym kilka wskazówek, w przeciwnym razie, jeśli można oferować porady CAAnimation na podejściu, które byłoby zbyt wielkie.













