gpt4 book ai didi

iphone - MKCircleview 图纸

转载 作者:行者123 更新时间:2023-12-03 21:22:42 27 4
gpt4 key购买 nike

如何在MKCircleview中绘制文字?我必须在 MKMapview 的覆盖层上打印文本。这可能吗?

最佳答案

在我的 MKOverlayView 的叠加 View 子类的这一部分中:

- (void)drawMapRect:(MKMapRect)mapRect
zoomScale:(MKZoomScale)zoomScale
inContext:(CGContextRef)context

你应该像这样/某事/:

  CGContextSetTextMatrix(context, CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0));
// Setup text rendering stuff.
CGFloat fontHeight = rect.size.height/2.0f;
CGContextSelectFont(context, "Thonburi", fontHeight, kCGEncodingMacRoman);
CGContextSetRGBFillColor(context, 0, 0, 0, 1);
CGContextSetRGBStrokeColor(context, 0, 0, 0, 1);
// Set string.
const char *text = [[NSString stringWithFormat:@"%d",clusters[i].count] UTF8String];
int len = strlen(text);
// Render text invisible.
CGContextSetTextDrawingMode(context, kCGTextInvisible);
CGContextShowTextAtPoint(context,
0,
0,
text,
strlen(text));
// Get actual point it was renderered.
CGPoint pt = CGContextGetTextPosition(context);
// Set text to visible.
CGContextSetTextDrawingMode(context, kCGTextFillStroke);
// Actually render text.
CGContextShowTextAtPoint(context,
rect.origin.x + (0.5f * rect.size.width) - (0.5f * pt.x), // Origin + half the width - half the width of text == center aligned text?
rect.origin.y + (1.25f * fontHeight), // Hack. 1 1/4 font height (which is half rect height) == center vert. aligned text.
text,
len);

这将使文本呈现在圆的中间。

关于上述代码的一些警告...它实际上取自 MKOverlayPathView 的子类,在其中我在不同位置的覆盖 View 上绘制了许多圆圈,因此需要一种相当动态的方法在正确的位置绘制文本。因此,该代码可能不会成为您的简单解决方案,并且比您实际需要的要复杂一些。然而,它应该为您指明正确的方向。

请记住,在 map 套件上拥有多个叠加 View 会导致随机崩溃和堆栈跟踪的疯狂,因为层会消耗越来越多的内存。因此,如果您有少量的叠加层,我建议您也走 MKOverlayPathView 路线。

我把头撞在 table 上将近一个月,才发现它为什么会随机崩溃。

我的代码用于聚类,将文本放置在每个圆圈的中间,并显示该聚类中的项目数。

关于iphone - MKCircleview 图纸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3279659/

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