Я создал подкласс MKAnnotationView для создания аннотации, которая в основном рисует круг вокруг точки на виде карты через переопределение drawRect. Круг хорошо рисует в следующих ситуациях (в симуляторе):
- При начальной загрузке вида карты
- При смахивании, но только когда движение свайпа остановлено до окончания касания (чтобы карта не «отклонялась» после окончания касания)
- При крайнем увеличении
Круг исчезнет, если произойдет любое из следующих действий:
- Проведите пальцем там, где карта "плавает" после окончания касания
- Двойное увеличение
Круг снова появится, если какое-либо действие в «рабочей» группе будет выполнено после его исчезновения.
Что может вызвать это? Я не эксперт по рисованию / отображению / верстке (честно говоря, я не эксперт по C и iPhone).
Вот несколько упрощенный код, который кажется наиболее актуальным из моего подкласса MKAnnotationView:
- (void)drawRect:(CGRect)rect {
// Drawing code
[self drawCircleAtPoint:CGPointMake(0,0) withRadius:self.radiusInPixels andColor:self.circleAnnotation.color];
}
- (void)drawCircleAtPoint:(CGPoint)p withRadius:(int)r {
CGContextRef contextRef = UIGraphicsGetCurrentContext();
float alpha = 0.75;
CGContextSetRGBFillColor(contextRef, 255, 0, 0, alpha);
CGContextSetRGBStrokeColor(contextRef, 255, 0, 0, alpha);
// Draw a circle (border only)
CGContextStrokeEllipseInRect(contextRef, CGRectMake(0, 0, 2*r, 2*r));
}