【发布时间】:2009-07-17 14:41:42
【问题描述】:
场景:
我有一组CGPaths。它们大多只是线条(即不是封闭的形状)。它们以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 也有一定的笨拙。
那么,有人有什么想法吗?如何检查用户是否在CGPath 上的任何区域附近(在本例中为 15 像素内)点击?
【问题讨论】: