시나리오 :사용자가 CGPath 근처에서 탭했는지 어떻게 확인할 수 있습니까?
나는 CGPath
세트를 가지고 있습니다. 그것들은 대체로 단순한 선들입니다 (즉, 닫힌 모양이 아닙니다). 그들은 UIView
의 그림 그리기 방법으로 화면에 그려집니다.
사용자가 경로 중 하나를 탭했는지 어떻게 확인할 수 있습니까?
는 여기에 내가 작업 한 내용은 다음과 같습니다
UIGraphincsBeginImageContext(CGPathGetBoundingBox(path));
CGContextRef g = UIGraphicsGetCurrentContext();
CGContextAddPath(g,path);
CGContextSetLineWidth(g,15);
CGContextReplacePathWithStrokedPath(g);
CGPath clickArea = CGContextCopyPath(g); //Not documented
UIGraphicsEndImageContext();
그래서 나는 그것이 내가 필요로하는 기능을 가지고 있기 때문에, 이미지 컨텍스트를 만드는 일을 해요. 그런 다음 컨텍스트에 경로를 추가하고 선 너비를 15로 설정합니다.이 지점에서 경로를 스트로킹하면 클릭 수를 찾기 위해 내부에서 확인할 수있는 클릭 영역이 만들어집니다. 그래서 나는 그 문구를 쓰다듬어 진 경로로 바꾸고 그 경로를 다시 다른 CGPath로 복사하는 방법으로 그 선명한 길을 얻는다. 나중에, 내가 확인할 수 있습니다
if (CGPathContainsPoint(clickArea,NULL,point,NO)) { ...
를 모든 것이 잘 좋은 일을하지만, CGContextCopyPath
는 문서화되지 않은 것으로, 명백한 이유를 위해 사용하는 나쁜 생각처럼 보였다. 이 목적을 위해서 CGContext
을 만드는 것에 대한 약간의 끈적 함이 있습니다.
아무도 아이디어가 있습니까? 사용자가 CGPath
에있는 모든 지역 (이 경우 15 픽셀 이내)을 탭했는지 어떻게 확인합니까?
Swift 3.0에서 :'path.copy (strokingWithWidth : CGFloat ...)' – buildsucceeded