#import "DHPalette.h"
@interface DHPalette ()
/**
记录所有路径的数组
*/
@property (nonatomic, strong) NSMutableArray *paths;
@end
@implementation DHPalette
#pragma mark - 懒加载
- (NSMutableArray *)paths
{
if (nil == _paths) {
_paths = [NSMutableArray array];
}
return _paths;
}
#pragma mark - 清除上一条线
- (void)back
{
[self.paths removeLastObject];
[self setNeedsDisplay];
}
#pragma mark - 清除屏幕
- (void)clear
{
[self.paths removeAllObjects];
[self setNeedsDisplay];
}
#pragma mark - 记录手指按下时的起点到最后一条路径当中
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint startPoint = [[touches anyObject] locationInView:self];
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:startPoint];
[self.paths addObject:path];
[self setNeedsDisplay];
}
#pragma mark - 记录手指再画板上移动的时候的点到最后一条路径当中
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint currentPoint = [[touches anyObject] locationInView:self];
[[self.paths lastObject] addLineToPoint:currentPoint];
[self setNeedsDisplay];
}
#pragma mark - 记录手指抬起的时候的终点到最后一条路径当中
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint endPoint = [[touches anyObject] locationInView:self];
[[self.paths lastObject] addLineToPoint:endPoint];
[self setNeedsDisplay];
}
#pragma mark - 遍历数组画出所有的路径
- (void)drawRect:(CGRect)rect {
[self.paths enumerateObjectsUsingBlock:^(UIBezierPath *path, NSUInteger idx, BOOL *stop) {
[path stroke];
}];
}