UIBezierPath дает острые края - PullRequest
       44

UIBezierPath дает острые края

0 голосов
/ 02 сентября 2011

Когда я использую UIBezierPath, чтобы рисовать там, где пользователь касается, если пользователь быстро переходит, иногда я получаю действительно жесткие точки, такие как кончик треугольника.Любая подсказка, что может быть причиной этого?Или как я могу это исправить?

Я собираю точки с помощью touchesBegan / Moved / Ended и помещаю их в NSArray UIBezierPaths.

1 Ответ

2 голосов
/ 02 сентября 2011

Несмотря на название, UIBezierPath не просто рисует кривые. На самом деле, по умолчанию это не так - возможно, вы просто передаете координаты, возвращенные touchesBegan и т. Д., В метод addLineToPoint.

Вместо того, чтобы просто передавать все координаты касания непосредственно в UIBezierPath, вы должны сначала интерполировать их, чтобы избежать резких линий, возникающих при быстром перемещении пальца по экрану. Это не так уж сложно, хотя требует некоторых знаний о том, как работают кривые Безье и сплайн-интерполяция.

Если вы ищете немного более простой выход, есть пара библиотек с открытым исходным кодом, которые сделают это для вас, как эта: http://cocoacontrols.com/platforms/ios/controls/smooth-line-view

...