我无法在使用 UIBezierpath 绘制的线条中找到接触点。CGPathContainPoint 不适用于线路。请帮帮我
问问题
970 次
1 回答
7
您可以创建另一个路径对象来表示路径在屏幕上的实际外观,然后检查触摸点是否在该路径内。在CGPath 参考中,您会找到方便的构造函数CGPathCreateCopyByStrokingPath
。你会像这样使用它:
CGPathRef originalPath = myBezierPath.CGPath; //The single-line path
//Use the values you use to draw the path onscreen,
//or use a width representing how far the user can touch
//for it to be recognized by the path.
//For example, for an error tolerance of 4px, use a width of 8px.
CGPathRef strokedPath = CGPathCreateCopyByStrokingPath(originalPath, NULL, lineWidth, lineCap, lineJoin, miterLimit);
BOOL pathContainsPoint = CGPathContainsPoint(strokedPath, NULL, touchPoint, NO);
如上所示,这为您提供了指定用户要触摸的区域而不是线条的好处。
希望这可以帮助!
于 2013-08-07T05:08:51.000 回答