Scenariusz:Jak mogę sprawdzić, czy użytkownik stuknął w pobliżu CGPath?
Mam zestaw CGPath
s. Są to w większości tylko linie (tzn. Nie zamknięte kształty). Są rysowane na ekranie w metodzie losowania UIView
.
Jak mogę sprawdzić, czy użytkownik stuknął w pobliżu jednej ze ścieżek?
Oto co ja pracuje:
UIGraphincsBeginImageContext(CGPathGetBoundingBox(path));
CGContextRef g = UIGraphicsGetCurrentContext();
CGContextAddPath(g,path);
CGContextSetLineWidth(g,15);
CGContextReplacePathWithStrokedPath(g);
CGPath clickArea = CGContextCopyPath(g); //Not documented
UIGraphicsEndImageContext();
Więc co robię jest stworzenie kontekstu obrazu, ponieważ ma funkcje, których potrzebuję. Następnie dodaję ścieżkę do kontekstu i ustawię szerokość linii na 15. Przesuwanie ścieżki w tym miejscu tworzy obszar klikania, który mogę sprawdzić wewnątrz, aby znaleźć kliknięcia. Dostaję więc tę obrysowaną ścieżkę, mówiąc kontekst, aby zmienić ścieżkę w ścieżkę obrysowaną, a następnie skopiować tę ścieżkę z powrotem do innej ścieżki CGPath. Później można sprawdzić:
if (CGPathContainsPoint(clickArea,NULL,point,NO)) { ...
Wszystko działało dobrze, ale CGContextCopyPath
, będąc nieudokumentowana, wydawało się, że to zły pomysł, aby korzystać z oczywistych powodów. Istnieje również pewna kufiness w tworzeniu CGContext
tylko w tym celu.
Czy ktoś ma jakieś pomysły? Jak sprawdzić, czy użytkownik stuknął w pobliżu (w tym przypadku w obrębie 15 pikseli) dowolnego obszaru na CGPath
?
W Swift 3.0: 'path.copy (strokingWithWidth: CGFloat ...) – buildsucceeded