Van egy példánya MKMapView, és szeretné használni az egyéni kommentár ikonok helyett a szabványos csap ikonok által szolgáltatott MKPinAnnotationView. Így hát, beállít egy alosztálya MKAnnotationView nevű CustomMapAnnotation vagyok, és kényszerítő -(void)drawRect:kell felhívni a CGImage. Ez működik.
A baj akkor jön, amikor megpróbálom megismételni a .animatesDropfunkcionalitás által szolgáltatott MKPinAnnotationView; Szeretném én -ikonok fokozatosan csökkent felülről és balról jobbra haladva, amikor a kommentárokat adunk a MKMapViewpéldány.
Itt - (void) drawRect: az CustomMapAnnotation, ami akkor működik, ha csak felhívni a UIImage (ami a 2. sorban nem):
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
[((Incident *)self.annotation).smallIcon drawInRect:rect];
if (newAnnotation) {
[self animateDrop];
newAnnotation = NO;
}
}
A baj akkor jön, amikor hozzá a animateDropmódszer:
-(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:@];
}
Ez egyszerűen nem működik, és nem lehet sok oka lehet, hogy miért. Nem fogok bejutni mindegyiket most. A legfontosabb dolog, én akartam tudni, ha a megközelítés hang egyáltalán, vagy ha kell próbálni valami teljesen más.
Próbáltam is, hogy a csomag az egészet egy animációs ügyletet úgy, hogy a beginTime paraméter esetleg valóban működik; ez úgy tűnt, hogy nem csinál semmit. Nem tudom, ha ez azért van, mert én hiányzik néhány fontos pont, vagy azért, mert MapKit van lomtárba én animációk valahogy.
// Does nothing
[CATransaction begin];
[map addAnnotations:list];
[CATransaction commit];
Ha valakinek van bármilyen tapasztalata animált MKMapAnnotations mint ez, szeretnék néhány tanácsot, egyébként ha tudsz ajánlani CAAnimation tanácsot a megközelítés, hogy jó lenne túl.













