当我使用 UIBezierPath 绘制用户触摸的位置时,如果用户快速移动,有时我会得到非常硬的点,比如三角形的尖端。任何线索可能导致这种情况?或者我该如何解决?
我正在使用 touchesBegan/Moved/Ended 捕获这些点,并将它们放入 UIBezierPaths 的 NSArray 中。
当我使用 UIBezierPath 绘制用户触摸的位置时,如果用户快速移动,有时我会得到非常硬的点,比如三角形的尖端。任何线索可能导致这种情况?或者我该如何解决?
我正在使用 touchesBegan/Moved/Ended 捕获这些点,并将它们放入 UIBezierPaths 的 NSArray 中。
尽管有这个名字,UIBezierPath
但不只是绘制曲线。事实上,默认情况下它不会 - 大概您只是将touchesBegan
etc 返回的坐标传递到addLineToPoint
方法中。
与其简单地将所有触摸坐标直接传递到 a 中UIBezierPath
,不如先对它们进行插值,以避免在您在屏幕上快速移动手指时出现这些尖锐的线条。这并不太难,尽管确实需要一些关于贝塞尔曲线如何工作和样条插值的知识。
如果您正在寻找更简单的出路,有几个开源库可以为您执行此操作,例如:http ://cocoacontrols.com/platforms/ios/controls/smooth-line-view