Quartz2D _简单画板

#import "DrawView.h"

@interface DrawView()
//保存获取到的当前路径
@property (strong, nonatomic) UIBezierPath *path;
//保存所有路径(遍历绘制)
@property (strong, nonatomic) NSMutableArray *paths;

@end

@implementation DrawView

- (NSMutableArray *)paths{
    
    if (_paths == nil) {
        
        _paths = [NSMutableArray array];
    }
    
    return _paths;
}

//重绘: 就是指把之前的路径全部清除到, 在重新画, 想要获取之前路径, 建立一个数组来保存之前的路径, 再遍历数组,
- (void)drawRect:(CGRect)rect {
    for (UIBezierPath *path in self.paths) {
        
        //画图
        [path stroke];
    }
}

//起点方法
//给定触摸点
- (CGPoint)poinwiTouches:(NSSet *)touches{
    
    //1. 获取到触摸对象, 触摸的当前坐标
    UITouch *touch = [touches anyObject];
    
    return [touch locationInView:self];
}

//触摸到哪, 就从哪画
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    
    //1. 创建路径
    self.path = [UIBezierPath bezierPath];
    
    //2. 获取到触摸的点
    CGPoint point = [self poinwiTouches:touches];
    
    //3. 确定起点在哪
    [self.path moveToPoint:point];

    //4. 获取开始路径(创建一个路径, 就保存到数组)
    [self.paths addObject:self.path];
    
}

//手指移动画线(只要绘制不停移动, 就会一直走该方法, 不断创建结束点)
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    
    //获取触摸点
    CGPoint point = [self poinwiTouches:touches];
    
    //确定终点
    //添加一条线
    [self.path addLineToPoint:point];
    
    //重新绘制(只要移动位置, 就不停重新调用drawRect方法, 实现实时的更新绘制路径  )
    [self setNeedsDisplay];
    //重绘: 就是指把之前的路径全部清除到, 在重新画, 想要获取之前路径, 建立一个数组来保存之前的路径, 再遍历数组,
   
}```

你可能感兴趣的:(Quartz2D _简单画板)