Я рисую путь шириной 10 пикселей, но когда я пытаюсь обнаружить в нем касания, UIBezierPath содержит: метод обнаруживает только касания, которые происходят на линии шириной 1 пиксель, а не на линии шириной 10 пикселей.
Код: Выделить всё
let path = UIBezierPath()
path.move(to: start)
path.addLine(to: end)
path.usesEvenOddFillRule = true
path.lineWidth = 10
path.lineCapStyle = .round
path.stroke()
path.close()
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
shapeLayer.strokeColor = lineColor.cgColor
shapeLayer.lineWidth = path.lineWidth
Код: Выделить всё
@objc func didTapOnView(_ recognizer: UIGestureRecognizer) {
let tapLocation:CGPoint = recognizer.location(in: self)
self.hitTest(tapLocation: CGPoint(x: tapLocation.x.rounded(), y: tapLocation.y.rounded()))
}
private func hitTest(tapLocation: CGPoint){
let path: UIBezierPath = path0
print("Touch location is: \(tapLocation)")
if path.contains(tapLocation){
print("inside")
} else{
print("outside")
}
}
Источник: https://stackoverflow.com/questions/781 ... an-1-pixel