2010-02-17 34 views
5

Tôi đã phân lớp MKAnnotationView để tạo chú thích về cơ bản vẽ một vòng tròn xung quanh một điểm trên một chế độ xem bản đồ qua ghi đè drawRect. Vòng tròn vẽ tốt trong các tình huống sau đây (trong mô phỏng):MKAnnotationView biến mất trên swipe và nhấn đúp vào zoom

  • On tải ban đầu của bản đồ
  • On swipe, nhưng chỉ khi chuyển động swipe được dừng lại trước khi liên lạc đầu (do đó bản đồ mà không "bờ biển" sau khi liên lạc kết thúc)
  • On zoom nhúm

vòng tròn sẽ biến mất khi một trong các hành động sau đây xảy ra:

  • Swipe nơi bản đồ "bờ biển" sau khi liên lạc kết thúc
  • Double-tap zoom

Vòng tròn sẽ xuất hiện trở lại nếu bất kỳ hành động trong nhóm "làm việc" được thực hiện sau khi nó đã biến mất.

Điều gì có thể gây ra điều này? Tôi không phải là một chuyên gia vẽ/hiển thị/bố cục (thẳng thắn, tôi cũng không phải là một chuyên gia về C hoặc iPhone).

Dưới đây là một số mã hơi đơn giản mà dường như phù hợp nhất từ ​​lớp con MKAnnotationView tôi:

- (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)); 
} 
+0

cũng nhìn thấy hành vi này, tìm kiếm một giải pháp ... –

+0

thậm chí tôi phải đối mặt với cùng một vấn đề, bất kỳ may mắn? – Ameya

+0

là drawRect được gọi là tất cả trong nhóm "không" làm việc? – Magnus

Trả lời

2

Bạn có thêm phương pháp này?

- (void)setAnnotation:(id <MKAnnotation>)annotation 
{ 
    [super setAnnotation:annotation]; 
    [self setNeedsDisplay]; 
} 

này được lấy từ ứng dụng mẫu mã của Apple được gọi là khí tượng đó đã bị xóa khỏi Trung tâm Nhà phát triển Apple, nhưng có thể được tìm thấy trên github https://github.com/acekiller/iOS-Samples/blob/master/WeatherMap/Classes/WeatherAnnotationView.m

+0

Chú thích thời tiết trong mã mẫu biến mất và tái xuất hiện sau mỗi lần kéo/thu phóng. – Robert

+1

Đó là bởi vì họ thực hiện nó theo cách đó, xem '- (void) mapView: (MKMapView *) bản đồ khu vựcDidChangeAnimated: (BOOL) hoạt hình' phương pháp trong 'MapViewController.m' –

+0

Làm việc cho tôi. Dunja, cảm ơn bạn !! – pho0

Các vấn đề liên quan