Scénario:Comment puis-je vérifier si un utilisateur a été engagé près d'un CGPath?
J'ai un ensemble de CGPath
s. Ce sont principalement des lignes (c'est-à-dire des formes non fermées). Ils sont dessinés à l'écran dans une méthode de dessin de UIView
.
Comment puis-je vérifier si l'utilisateur a tapé près de l'un des chemins?
Voici ce que j'avais travail:
UIGraphincsBeginImageContext(CGPathGetBoundingBox(path));
CGContextRef g = UIGraphicsGetCurrentContext();
CGContextAddPath(g,path);
CGContextSetLineWidth(g,15);
CGContextReplacePathWithStrokedPath(g);
CGPath clickArea = CGContextCopyPath(g); //Not documented
UIGraphicsEndImageContext();
Alors ce que je fais est la création d'un contexte d'image, car il a les fonctions dont j'ai besoin. Ensuite, j'ajoute le chemin au contexte, et définissez la largeur de la ligne à 15. Caresser le chemin à ce stade créerait la zone de clic, je peux vérifier à l'intérieur de trouver des clics. Donc, je reçois ce chemin caressé en disant au contexte de transformer le chemin en un chemin strié, puis en recopiant ce chemin dans un autre CGPath. Plus tard, je peux vérifier:
if (CGPathContainsPoint(clickArea,NULL,point,NO)) { ...
Tout a bien fonctionné et bien, mais le CGContextCopyPath
, étant sans papier, semblait être une mauvaise idée d'utiliser pour des raisons évidentes. Il y a aussi une certaine facilité à créer un CGContext
juste à cet effet.
Alors, est-ce que quelqu'un a des idées? Comment puis-je vérifier si un utilisateur a tapé près (dans ce cas, dans les 15 pixels) de n'importe quelle zone sur un CGPath
?
Dans Swift 3.0: 'path.copy (strokingWithWidth: CGFloat ...)' – buildsucceeded