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