设想:
我有一套CGPath
s。它们大多只是线条(即不是封闭的形状)。它们以UIView
的 draw 方法绘制在屏幕上。
如何检查用户是否在其中一条路径附近点击?
这是我的工作:
UIGraphincsBeginImageContext(CGPathGetBoundingBox(path));
CGContextRef g = UIGraphicsGetCurrentContext();
CGContextAddPath(g,path);
CGContextSetLineWidth(g,15);
CGContextReplacePathWithStrokedPath(g);
CGPath clickArea = CGContextCopyPath(g); //Not documented
UIGraphicsEndImageContext();
所以我正在做的是创建一个图像上下文,因为它具有我需要的功能。然后我将路径添加到上下文中,并将线宽设置为 15。此时抚摸路径将创建点击区域,我可以在其中检查以查找点击。因此,我通过告诉上下文将路径转换为描边路径,然后将该路径复制回另一个 CGPath 来获得描边路径。稍后,我可以检查:
if (CGPathContainsPoint(clickArea,NULL,point,NO)) { ...
这一切都运作良好,但由于CGContextCopyPath
明显的原因,没有记录的 . 似乎是一个坏主意。CGContext
为了这个目的而制作一个公正的东西也有一定的笨拙。
那么,有人有什么想法吗?如何检查用户是否在 a 上的任何区域附近(在本例中为 15 像素内)轻敲CGPath
?