У меня есть экземпляр MKMapViewи хотел бы использовать пользовательские аннотаций иконки вместо стандартных значков контактов , поставляемых MKPinAnnotationView. Итак, я установка подкласс MKAnnotationView называется CustomMapAnnotation и я переопределение -(void)drawRect:рисовать CGImage. Это работает.
Проблема возникает , когда я пытаюсь повторить .animatesDropфункциональность поставляемого MKPinAnnotationView; Я хотел бы, чтобы мои значки появляются постепенно, упал сверху и слева-направо порядок, когда добавляются аннотация к MKMapViewпримеру.
Вот - (Недействительными) DrawRect: для CustomMapAnnotation, который работает, когда вы просто нарисовать UIImage (что делает вторая строка):
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
[((Incident *)self.annotation).smallIcon drawInRect:rect];
if (newAnnotation) {
[self animateDrop];
newAnnotation = NO;
}
}
Проблема возникает , когда вы добавляете animateDropметод:
-(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:@];
}
Это просто не работает, и там может быть много причин, почему. Я не буду вдаваться во все из них в настоящее время. Главное я хотел бы знать, если подход звук вообще, или если я должен попробовать что-то совершенно другое.
Я пытался также упаковать все это в транзакции анимации, так что параметр BeginTime может сработать; это, казалось, ничего не делать вообще. Я не знаю, если это потому, что мне не хватает какой-то ключевой момент или является ли это потому, что MapKit будет громить мою анимацию каким-то образом.
// Does nothing
[CATransaction begin];
[map addAnnotations:list];
[CATransaction commit];
Если кто имеет опыт работы с анимированным MKMapAnnotations как это, я хотел бы некоторые советы, в противном случае, если вы можете дать совет CAAnimation на подходе, это было бы слишком большим.













