Я установил для UIBezierPath linejoinstyle значение .round, что прекрасно работает, за исключением случаев, когда 1 сегмент линии возвращается точно над предыдущим сегментом линии или угол между сегментами очень мал, образуя острый угол, как показано на рисунке ниже
Код инициализации пути:
let path = UIBezierPath() // White path
let testPath = UIBezierPath() // Inner red path
// Setup initial path
self.path.lineWidth = 8
self.path.lineJoinStyle = .round
self.path.lineCapStyle = .round
// Setup inner red path
self.testPath.lineWidth = 1
self.testPath.lineJoinStyle = .round
self.testPath.lineCapStyle = .round
Переопределенная функция рисования вида:
override func draw(_ rect: CGRect) {
self.color.setStroke()
self.path.stroke()
self.testColor.setStroke()
self.testPath.stroke()
}
Я реализую конструкциюпуть в перестановках touchesBegan, touchesMoved и touchesEnded, так как это инструмент рисования, который я создаю - я использую метод addQuadCurve для добавления точек к пути и НЕ устанавливаю никаких других свойств пути в методах прикосновений.
Соединение линий, кажется, обрезается, когда я рисую острый набросок, как показано выше.Теперь, согласно этому сообщению Stackoverflow , такое поведение могло быть ошибкой, которая была устранена в iOS 7 (но для iPad SDK согласно отчету об ошибках пользователя в Apple).
Мой вопрос: Я использую iOS SDK 12.1, так что, по какой-то причине, эта ошибка снова появляется, или я что-то упустил?Потому что это происходит только тогда, когда угол между двумя отрезками линии практически ничтожно мал.Я также отправил отчет об ошибке в Apple и на OpenRadar на всякий случай.