手把手教你通过Quartz2D制作彩色涂鸦板和手势解锁

453 查看

我们已经学习完了Quartz2D的一些基本的用法,在实际开发过程中,经常使用Quartz2D,可以帮助我们少使用苹果自带的控件,直接画图到上下文,对系统的性能是一个非常好的优化方式。Quartz2D的功能强大,绝逼不是画线,绘制图片那么easy,今天讲一下他在实际项目中的应用,顺便将思路理清楚,方便大家看涂鸦板demo,还有手势解锁


文章中的几个demo

  • 1.使用图形上下文制作涂鸦板
  • 2.使用贝塞尔路径制作涂鸦板
  • 3.手势解锁

下面详细的介绍一下项目的思路

一.使用图形上下文制作涂鸦板
111648725-2bf3d5c28304c04b
效果图
121648725-d65334c31b49ab34
点击保存,在相册中的图片

分析
1.涂鸦板实际上就是绘制很多的线条
2.保存线条,使用可变数组
3.使用上下文绘制图片,使用drawRect方法
4.和屏幕交互,应该使用touchesBegin方法

代码分析

1.自定义一个DBPainterView
2.在view中生成一个可变数组作为变量,懒加载处理,可以供程序使用

3.实现touchesBegin,touchesMoved,touchesEnd方法

代码分析,
3.1.touchesBegin就是开始绘制,现在没有拿到路径的具体的点,所以我们应该给每一个路劲用一个小数组保存所有点的数组 linePathArr(保存每一根line的数组),每一次调用都应该是创建一个新的路径(新的linePathArr),然后加到保存所有路径的数组中( pointArr保存了所有line的数组),然后调用setNeedsDisplay方法,绘制路径
3.2.touchesMoved方法是手指在屏幕移动的时候调用的,频率最高,就是一直在添加point,说白了,就是给最新添加的那个路径添加点,所以应当找到数组中最后一个路径,然后给这个路径添加point,let lastLineArr = pointArr.lastObject,lastLineArr!.addObject(NSValue.init(CGPoint: startPoint!))
3.3.touchEnd方法和2的事情是一样的,所以可以提炼一下代码,我就不写了

4.绘制图片 drawRect