我已将 MKAnnotationView 子类化以创建一个注释,该注释基本上通过覆盖 drawRect 在地图视图上的一个点周围绘制一个圆圈。在以下情况下(在模拟器中),圆圈绘制得很好:
- 在地图视图的初始加载
- 滑动时,但仅在触摸结束前停止滑动动作时(这样地图在触摸结束后不会“滑行”)
- 在捏缩放
当发生以下任何操作时,圆圈将消失:
- 在触摸结束后滑动地图“海岸”的位置
- 双击缩放
如果在“工作”组中的任何操作在它消失后执行,该圆圈将重新出现。
什么可能导致这种情况?我不是绘图/显示/布局专家(坦率地说,我也不是 obj 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));
}