1 @interface NJView ()
2
3 @property (nonatomic, strong) NSMutableArray *paths;
4
5 @end
6
7 @implementation NJView
8
9 - (NSMutableArray *)paths
10 {
11 if (_paths == nil) {
12 _paths = [NSMutableArray array];
13 }
14 return _paths;
15 }
16
17 // 开始触摸
18 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
19 {
20
21 // 1.获取手指对应UITouch对象
22 UITouch *touch = [touches anyObject];
23 // 2.通过UITouch对象获取手指触摸的位置
24 CGPoint startPoint = [touch locationInView:touch.view];
25
26 // 3.当用户手指按下的时候创建一条路径
27 UIBezierPath *path = [UIBezierPath bezierPath];
28 // 3.1设置路径的相关属性
29 [path setLineJoinStyle:kCGLineJoinRound];
30 [path setLineCapStyle:kCGLineCapRound];
31 [path setLineWidth:10];
32
33
34 // 4.设置当前路径的起点
35 [path moveToPoint:startPoint];
36 // 5.将路径添加到数组中
37 [self.paths addObject:path];
38
39 }
40 // 移动
41 - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
42 {
43 // 1.获取手指对应UITouch对象
44 UITouch *touch = [touches anyObject];
45 // 2.通过UITouch对象获取手指触摸的位置
46 CGPoint movePoint = [touch locationInView:touch.view];
47
48 // 3.取出当前的path
49 UIBezierPath *currentPaht = [self.paths lastObject];
50 // 4.设置当前路径的终点
51 [currentPaht addLineToPoint:movePoint];
52
53 // 6.调用drawRect方法重回视图
54 [self setNeedsDisplay];
55
56 }
57
58 // 离开view(停止触摸)
59 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
60 {
61
62 [self touchesMoved:touches withEvent:event];
63
64 }
65
66 // 画线
67 - (void)drawRect:(CGRect)rect
68 {
69
70 [[UIColor redColor] set];
71 // 边路数组绘制所有的线段
72 for (UIBezierPath *path in self.paths) {
73 [path stroke];
74 }
75
76 }
77
78 - (void)clearView
79 {
80 [self.paths removeAllObjects];
81 [self setNeedsDisplay];
82 }
83 - (void)backView
84 {
85 [self.paths removeLastObject];
86 [self setNeedsDisplay];
87 }
88
89
90 @end