Scenario:Come posso verificare se un utente ha toccato vicino a CGPath?
Ho un set di CGPath
s. Sono per lo più solo linee (cioè forme non chiuse). Sono disegnati sullo schermo con il metodo di disegno di UIView
.
Come posso verificare se l'utente ha toccato vicino a uno dei percorsi?
Ecco quello che avevo a lavorare:
UIGraphincsBeginImageContext(CGPathGetBoundingBox(path));
CGContextRef g = UIGraphicsGetCurrentContext();
CGContextAddPath(g,path);
CGContextSetLineWidth(g,15);
CGContextReplacePathWithStrokedPath(g);
CGPath clickArea = CGContextCopyPath(g); //Not documented
UIGraphicsEndImageContext();
Quindi quello che sto facendo è la creazione di un contesto di immagini, perché ha le funzioni di cui ho bisogno. Quindi aggiungo il percorso al contesto e imposta la larghezza della linea su 15. Tracciando il percorso a questo punto creerei l'area di clic che posso controllare all'interno per trovare i clic. Quindi ottengo quel percorso tracciato dicendo al contesto di trasformare il percorso in un percorso tracciato, quindi copiare quel percorso di nuovo in un altro CGPath. Più tardi, posso controllare:
if (CGPathContainsPoint(clickArea,NULL,point,NO)) { ...
Tutto funzionava bene, ma il CGContextCopyPath
, essendo privi di documenti, sembrava una cattiva idea di utilizzare per ovvie ragioni. C'è anche un certo imbarazzo nel fare un CGContext
solo per questo scopo.
Quindi, qualcuno ha qualche idea? Come faccio a verificare se un utente ha toccato vicino (in questo caso, entro 15 pixel) di qualsiasi area su un CGPath
?
In Swift 3.0: 'path.copy (strokingWithWidth: CGFloat ...)' – buildsucceeded