Ben bir örneğini sahip MKMapViewve özel açıklama simgeler yerine MKPinAnnotationView tarafından sağlanan standart raptiye simgelerini kullanmak istiyorum. Yani, kurulum ettik MKAnnotationView bir alt sınıf CustomMapAnnotation denilen ve geçersiz kılma ediyorum -(void)drawRect:bir CGImage çizmek. Bu çalışıyor.
Ben çoğaltmak çalıştığınızda sorun gelir .animatesDropMKPinAnnotationView tarafından sağlanan işlevselliği; Benim simgeler kademeli olarak görünmesi için isterdim, yukarıdan ve düştü soldan sağa ek açıklamaları eklendiğinde, sipariş MKMapViewörneği.
İşte - (void), drawRect: Sadece (2 hat yaptığı iştir) UIImage çizerken çalışır CustomMapAnnotation için:
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
[((Incident *)self.annotation).smallIcon drawInRect:rect];
if (newAnnotation) {
[self animateDrop];
newAnnotation = NO;
}
}
Eklediğinizde sorun gelir animateDropyöntemi:
-(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:@];
}
Bu sadece çalışmıyor, ve bunun nedenleri bir sürü olabilir. Şimdi hepsi giremeyeceğim. Bildiğim isteyen ediyorum ana şey ben tamamen farklı bir şey denemek gerekir eğer yaklaşım hiç ses veya eğer olduğunu.
Ben BeginTime parametresi aslında işe yarayabilecek böylece bir animasyon işlem haline şeyi paketlemek için de çalıştı; bu hiç bir şey yapamaz gibiydi. Ben bazı temel nokta eksik am çünkü bu olup olmadığını bilmiyorum ya MapKit nasılsa animasyonlar kullanılamaz hale getiriyor çünkü olsun.
// Does nothing
[CATransaction begin];
[map addAnnotations:list];
[CATransaction commit];
Herkes böyle animasyonlu MKMapAnnotations ile herhangi bir deneyim varsa, yaklaşım CAAnimation öneriler sunabilir, aksi takdirde, ben bazı ipuçları isteriz, bu çok iyi olur.













