シナリオ:
Sのセットを持っていCGPath
ます。それらはほとんど単なる線です (つまり、閉じた形状ではありません)。UIView
それらはの draw メソッドで画面に描画されます。
ユーザーがいずれかのパスの近くをタップしたかどうかを確認するにはどうすればよいですか?
これが私が働いていたものです:
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
、この目的のためだけに を作成することについては、ある種の不器用さもあります。
それで、誰かアイデアはありますか?ユーザーが の任意の領域の近く (この場合は 15 ピクセル以内) をタップしたかどうかを確認するにはどうすればよいCGPath
ですか?