2011-04-07 3 views
2

MKMapView의 확대/축소 수준에 따라 다릅니다. 사용자 지정 MKAnnotationView를 다시 그리기해야합니다. 내가 이해 마찬가지로 지금까지, 여기 MKMapView AnnotationView의 점멸 강제로 주석을 추가 한 후지도 컨트롤러다시 그리기 MKAnnotationView

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated 

제거의 다음 방법에 그것을하고해야합니다. 어떻게해야합니까?

답변

3

제거하고 다시 추가 할 필요가 없습니다. 맞춤 주석보기를 변경하고 setNeedsDisplay으로 전화하십시오. 예 : 줌 변경은 MKAnnotationView에 대한 참조를 얻을 때

@interface AnnotationClusterView : MKAnnotationView { 
@property (nonatomic, assign) int badgeNumber; 
} 
@implementation AnnotationClusterView 
@synthesize badgeNumber; 
// ... 
- (void)drawRect:(CGRect)rect { 
    NSString *string = [NSString stringWithFormat:@"%d",self.badgeNumber]; 
    [string drawInRect:stringRect withFont:[UIFont fontWithName:@"Helvetica-Bold" size:13.0]]; 
} 
@end 

는 다른 badgeNumber을 설정하고 [myView setNeedsDisplay];을 요구하는 다시 그리기를 요청합니다. 이미지에 대해서도 동일한 작업을 수행 할 수 있습니다.

+0

감사합니다. 내 맞춤 주석보기에서 문제를 찾으려고 미쳐 버렸습니다. 기존의 뷰에 새로운 주석을 할당 한 후에는 뷰를 다시 그려 내지 않았습니다. SetNeededDisplay를 사용하면 문제가 해결되었습니다. – EasyCoder

+0

mapView에서 setNeedsDisplay를 호출했는지 스스로 확인하지 말고, 하루 종일'[self setNeedsDisplay];가 호출되면'drawRect :'가 실행되지 않는다는 것을 알게되었습니다. –