美文网首页人猿星球iOS开发那点儿事
iOS画板回放签名效果回放

iOS画板回放签名效果回放

作者: 举个栗子wow | 来源:发表于2020-08-28 17:39 被阅读0次

    长时间未写,更新一下。。。

    朋友有一个比较有意思的需求,做一个带回放功能的画板,趁着有空尝试下。。。
    比如你画了一个房子或者写了一个名字,操作完成之后,点击回放,可以看到你画的一个过程,像下面这样:


    屏幕录制Draw.gif

    画板的话不用说,比较简单,使用CAShapeLayer不停拼接path即可,回放的话,思路有很多种,就看要实现到哪种程度了。
    因为在绘制的过程中我们已经有了点位数组,再次还原path即可,所以路径问题不大,那么关键点在时间控制上,每个point的时间间隔决定着你画笔的快满。当然,从简来说,给个匀速也是未尝不可,简化了逻辑处理量。不过我还是想尝试一下完全还原的效果,那么就不得不处理时间问题。

    方案与思路:
    1.计时器方案。计时器方案适用于匀速效果,在变速上则难以控制其效果,pass
    2.屏幕录制效果。用户想要使用回放功能,要让其他开屏幕录制功能。效果上可行,但是有点过度操作。
    3.动画效果配合CADisplaylink。利用动画的效果,我们可以操作出point与time的对应,这样配合屏幕的刷新机制,我们实时获取动画的一个当前路径,来拼接path。

    最终选择方案3,理由:无附加操作,理论可行性极高,而做出的结果也是OK的,说明此思路可行。
    方案3需要注意的几点:
    1.每断开的一笔都是一个path,每个path都是一个独立的CAShapeLayer,以此为最小单元进行控制;
    2.由于point的数量会非常庞大,考虑到节省下内存的情况,去除相同的point,保留最后一个point;
    3.每个UITouch的对象都携带一个timestamp属性,以此为时间的入口;
    4.动画这里,使用的关键帧动画CAKeyframeAnimation,通过给定position和keytimes使其产生动画路径,也可以说是利用动画帮我们做出时间差异的效果;

    Git:https://github.com/QiuYunxiang/DrawRecording

    8.30补充更新:后续需要加入动画暂停 / 继续回放的效果,还在尝试方案

    相关文章

      网友评论

        本文标题:iOS画板回放签名效果回放

        本文链接:https://www.haomeiwen.com/subject/fyllsktx.html