У меня к вам быстрый вопрос, ребята.
У меня есть shapeLayer, в котором я устанавливаю рамку.
Затем я рисую фигуру внутри содержимого фрейма с помощью UIBezierPath, который я установил в shapeLayer.path
Вопрос в том, как определить, что касание внутри фигуры является истинным, а за пределами фигуры ложным?
Я пробовал все сумасшедшие вещи, но никто не работает
-(Boolean) isPoint:(CGPoint)point InsideShape:(CSAbstractShapeLayer*) shapeLayer fromSuperLayer:(CALayer*) sLayer
{
CGPoint locationPoint = point;
locationPoint = [sLayer convertPoint:locationPoint toLayer:shapeLayer];
CGAffineTransform at = shapeLayer.affineTransform;
return CGPathContainsPoint([shapeLayer path],&at, locationPoint, NO);
}
-(Boolean) isPoint:(CGPoint)point InsideShape:(CSAbstractShapeLayer*) shapeLayer fromSuperLayer:(CALayer*) sLayer
{
CGPoint locationPoint = point;
locationPoint = [sLayer convertPoint:locationPoint toLayer:shapeLayer];
return [[UIBezierPath bezierPathWithCGPath:shapeLayer.path] containsPoint:locationPoint];
}
-(Boolean) isPoint:(CGPoint)point InsideShape:(CSAbstractShapeLayer*) shapeLayer fromSuperLayer:(CALayer*) sLayer
{
CGPoint locationPoint = point;
locationPoint = [sLayer convertPoint:locationPoint toLayer:shapeLayer];
CGRect theRect = CGPathGetBoundingBox(shapeLayer.path);
return CGRectContainsPoint(theRect, locationPoint);
}
ПРИМЕЧАНИЕ 1. Кажется, что я пока не могу опубликовать изображение, поэтому изобразите прямоугольник с диагональной линией внутри,
Правая сторона линии - это форма, поэтому мне нужно определить отвод внутри как ДА, а снаружи (слева от линии и снаружи прямоугольника) как НЕТ
ПРИМЕЧАНИЕ 2. Может быть, это могло бы помочь, но я не могу понять это ... Я обнаружил, что если вы создаете shapeLayer и добавляете CGPath в shapeLayer.path и не предоставляете фрейм, рамка и граница shapeLayer равны [0,0,0,0], хотя фигура отображается на экране, поэтому [view.layer hitTest: point] не найдет shapeLayer в качестве цели. из-за этого я предоставил рамку и привязку к своему shapeLayer.
Большое спасибо за ваше время!