0

当我使用 UIBezierPath 绘制用户触摸的位置时,如果用户快速移动,有时我会得到非常硬的点,比如三角形的尖端。任何线索可能导致这种情况?或者我该如何解决?

我正在使用 touchesBegan/Moved/Ended 捕获这些点,并将它们放入 UIBezierPaths 的 NSArray 中。

4

1 回答 1

2

尽管有这个名字,UIBezierPath但不只是绘制曲线。事实上,默认情况下它不会 - 大概您只是将touchesBeganetc 返回的坐标传递到addLineToPoint方法中。

与其简单地将所有触摸坐标直接传递到 a 中UIBezierPath,不如先对它们进行插值,以避免在您在屏幕上快速移动手指时出现这些尖锐的线条。这并不太难,尽管确实需要一些关于贝塞尔曲线如何工作和样条插值的知识。

如果您正在寻找更简单的出路,有几个开源库可以为您执行此操作,例如:http ://cocoacontrols.com/platforms/ios/controls/smooth-line-view

于 2011-09-02T09:45:18.763 回答