Escenario:¿Cómo puedo verificar si un usuario tocó cerca de un CGPath?
Tengo un conjunto de CGPath
s. En su mayoría son solo líneas (es decir, formas no cerradas). Se dibujan en la pantalla en el método de sorteo UIView
.
¿Cómo puedo comprobar si el usuario ha tocado cerca de una de las rutas?
Aquí es lo que había trabajo:
UIGraphincsBeginImageContext(CGPathGetBoundingBox(path));
CGContextRef g = UIGraphicsGetCurrentContext();
CGContextAddPath(g,path);
CGContextSetLineWidth(g,15);
CGContextReplacePathWithStrokedPath(g);
CGPath clickArea = CGContextCopyPath(g); //Not documented
UIGraphicsEndImageContext();
Así que lo que estoy haciendo es crear un marco de imagen, ya que tiene las funciones que necesito. A continuación, agrego la ruta al contexto y establezco el ancho de la línea en 15. Al tocar la ruta en este punto crearé el área de clic en la que puedo consultar para encontrar los clics. Así que obtengo ese camino trazado diciéndole al contexto que convierta la ruta en una ruta contorneada, luego copie esa ruta nuevamente en otra CGPath. Más tarde, puedo comprobar:
if (CGPathContainsPoint(clickArea,NULL,point,NO)) { ...
Todo funcionó muy bien, pero el CGContextCopyPath
, no tener papeles, parecía una mala idea utilizar por razones obvias. También hay una cierta duda sobre hacer un CGContext
solo para este propósito.
Entonces, ¿alguien tiene alguna idea? ¿Cómo puedo verificar si un usuario ha tocado cerca (en este caso, dentro de 15 píxeles) de cualquier área en un CGPath
?
En Swift 3.0: 'path.copy (strokingWithWidth: CGFloat ...)' – buildsucceeded