Сценарий:
У меня есть набор 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
только для этой цели.
Итак, у кого-нибудь есть идеи? Как проверить, коснулся ли пользователь (в данном случае, в пределах 15 пикселей) какой-либо области на CGPath
?