2011-11-04 56 views
2

我有一個MKAnnotation子類表示一組地圖引腳,集羣中的引腳數量可以從MKAnnotation子類中獲取。對於這些註釋,我想顯示一個灰色圓圈,其中黑色粗體數字表示羣集中引腳的數量。我做了一個MKAnnotationView子類,可以實現initWithAnnotation:reuseIdentifier和的drawRect:方法,這是我實現的drawRect:方法:使用動態繪製的引腳獲取MKAnnotationView子類

- (void)drawRect:(CGRect)rect 
{ 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetRGBFillColor(context, 0.7f, 0.7f, 0.7f, 0.5f); 
    CGContextFillEllipseInRect(context, rect); 

    UIFont *font = [UIFont boldSystemFontOfSize: [UIFont smallSystemFontSize]]; 
    NSString *label = [NSString stringWithFormat:@"%i", [(LocationGroupAnnotation *)self.annotation locationCount]]; 
    CGPoint labelLocation; 

    if ([label length] == 1) 
    { 
     labelLocation = CGPointMake(rect.size.width/2.0f, (rect.size.height/2.0f) - (font.capHeight/2.0f)); 
    } else if ([label length] == 2) { 
     labelLocation = CGPointMake(rect.size.width/2.0f, (rect.size.height/2.0f) - (font.capHeight/2.0f)); 
    } else { 
     labelLocation = CGPointMake(rect.size.width/2.0f, (rect.size.height/2.0f) - (font.capHeight/2.0f)); 
    } 


    [label drawAtPoint:labelLocation withFont:font]; 

    NSLog(@"Drawn label at (%f,%f)", labelLocation.x, labelLocation.y); 
} 

忽略if語句,我要爲labelLocation值根據每個字母佔用多少空間來調整,以便數字居中。目前我所得到的是一個半透明的灰色圓圈,但沒有文字。我假設文本正在錯誤的位置繪製。另外我該如何指定文字應該出現在圓圈的前面而不是後面呢?

回答

4

右鍵調用drawAtPoint之前,設置你想要的文字顏色,否則它使用的顏色和CGContextSetRGBFillColor撥打以上設置:

[[UIColor blackColor] set]; //or some color that contrasts with background 
[label drawAtPoint:labelLocation withFont:font]; 

如果你圈子後繪製文本,它應該出現以上圓圈,反之亦然。