gpt4 book ai didi

iphone - 获取带有动态绘制引脚的 MKAnnotationView 子类

转载 作者:行者123 更新时间:2023-12-03 20:45:35 25 4
gpt4 key购买 nike

我有一个代表 map 引脚簇的 MKAnnotation 子类,簇中引脚的数量可从 MKAnnotation 子类检索。对于这些注释,我想显示一个灰色圆圈,其中黑色粗体数字表示集群中的引脚数量。我创建了一个 MKAnnotationView 子类,它实现了 initWithAnnotation:reuseIdentifier 和 drawRect: 方法,这是我对 drawRect: 方法的实现:

- (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 的值,我将根据每个字母占用的空间进行调整,以便数字居中。我现在得到的是一个半透明的灰色圆圈,但没有文字。我认为文本绘制在错误的位置。另外,如何指定文本应出现在圆圈前面而不是后面?

最佳答案

在调用drawAtPoint之前,设置您想要文本使用的颜色,否则它将使用上面的CGContextSetRGBFillColor调用设置的颜色:

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

如果在圆圈后面绘制文本,它应该出现在圆圈上方,反之亦然。

关于iphone - 获取带有动态绘制引脚的 MKAnnotationView 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8008277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com