我試圖在MKMapView上繪製一些包含文本的圓形覆蓋圖。 我已經subclassed MKCircleView,其中我把以下(基於this),但文本沒有出現。圓圈顯示正確。 (也嘗試了第一個響應的解決方案,結果相同)。在圓圈覆蓋圖中繪製文本
-(void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context {
[super drawMapRect:mapRect zoomScale:zoomScale inContext:context];
NSString * t= @"XXXXX\nXXXX" ;
UIGraphicsPushContext(context);
CGContextSaveGState(context);
[[UIColor redColor] set];
CGRect overallCGRect = [self rectForMapRect:[self.overlay boundingMapRect]];
NSLog(@"MKC : %lf, %lf ----> %lf , %lf ", mapRect.origin.x ,mapRect.origin.y , overallCGRect.origin.x, overallCGRect.origin.y);
[t drawInRect:overallCGRect withFont:[UIFont fontWithName:@"Arial" size:10.0] lineBreakMode:UILineBreakModeClip alignment:UITextAlignmentCenter];
CGContextRestoreGState(context);
UIGraphicsPopContext();
}
調試時,我得到這樣的
MKC : 43253760.000000, 104071168.000000 ----> 1.776503 , 1.999245
MKC : 43253760.000000, 104071168.000000 ----> -1.562442 , -2.043090
值是他們正常嗎?我錯過了什麼?
謝謝。
的答案結合這解決了我如何繪製文本的問題。但是,我的文本是水平居中,但垂直繪製在我的MKCircleView的頂部。你的垂直和水平居中? – Diziet
我正在計算文本的位置錯誤。 Hohum。 :P – Diziet
如果有人需要它,這就是我如何將文本居中在圓圈中,考慮到文本的寬度和高度:'CGSize size = [str sizeWithFont:[UIFont fontWithName:@「Arial」size:9]]; CGPoint center = CGPointMake(circleRect.origin.x + circleRect.size.width /2,circleRect.origin.y + circleRect.size.height/2); CGPoint textstart = CGPointMake(center.x - size.width/2,center.y - size.height/2);' – Templar