Определяет, содержит ли вертикальный UIBezierPath точку касания, и возвращает среднюю точку пути, связанную с точкой касания

#swift #uibezierpath

#swift #uibezierpath

Вопрос:

У меня есть прямой UIBezierPath, который можно растягивать и поворачивать на любой угол:

Вот чего я хочу добиться:

введите описание изображения здесь

Когда я касаюсь точки черной стрелки, она должна указывать isContain = true и возвращать a CGPoint , которая близка touchPoint и должна находиться в середине path (синяя стрелка).

Например: черная точка стрелки (x:251,y:302) , но она должна вернуться (x:250, y:300) , которая находится в середине path

Это то, что я пробовал, но оно работает только с горизонтальной линией

  func hasForHorizontalLine(pt point: CGPoint) -> Bool{
            
            let bezierRect = bounds
            let origin = bezierRect.origin
            let size = bezierRect.size

            if origin.x <= point.x , origin.x   size.width >= point.x, origin.y - lineWidth * 0.5 <= point.y , origin.y   lineWidth * 0.5 >= point.y{
                return true
            }
            else{
                return false
            }
    }
 

Комментарии:

1. У вас есть угол красной линии относительно горизонтали или его уравнение?

2. @Sweeper Да, у меня есть угол