现在有Swift版本可供选择!
在触摸屏上模仿笔在纸上签字提出了一系列挑战。
触摸事件发出的速率不足以模仿用户用手指制作的同样平滑的线条。仅简单地通过触摸点绘制直线将产生看起来不自然的由离散部分组成的线条 - 尤其当用户快速移动手指时,因为触摸事件的数量保持不变,因此每单位移动的距离的点数更少。
触摸事件也是在主线程上收集的,因此主线程上的任何瓶颈都可能对收集触摸事件的频率产生不利影响。
真实的笔在纸上签字的线条粗细各异,与笔移动的速度以及笔在纸上施加的力度/软度有关。要模仿这一点,需要使用更复杂的绘图程序,该程序涉及计算形状而不是简单地绘制触摸点之间设定重量的线条。
通过UberSignature,我们试图设计一个既响应又产生逼真签名的解决方案。该实现将职责分配给多个类,从而使逻辑更容易理解和维护。核心算法也是同步编写的,因此其执行很容易跟踪。然后通过一个包装类封装这些内容,并异步提供它们。
该软件包提供签名绘图ViewController,它检测触摸并在用户移动手指时绘制签名风格的线条。它提供使用之前图像实例化、获取当前签名图像、重置以及更改签名颜色的功能。它可以以任何大小呈现,并且调整视图大小将相应更新签名,使其能够轻松地在自动布局环境中使用。
实例化签名绘图ViewController,可以选择性地带有作为起始签名的图像。
Objective-C
[[UBSignatureDrawingViewController alloc] initWithImage:image];
Swift
SignatureDrawingViewController(image: image)
该ViewController可以直接呈现或作为子ViewController添加。视图可以使用自动布局定位,或将其frame设置为任何所需的尺寸。背景签名图像将调整大小以适应。