Quartz2D之贝塞尔涂鸦板(UIBezierPath)

来源:互联网 发布:学编程好找工作吗 编辑:程序博客网 时间:2024/05/24 02:46

#import "DHPalette.h"


@interface DHPalette ()


/**

 记录所有路径的数组

 */

@property (nonatomic,strong) NSMutableArray *paths;


@end


@implementation DHPalette


#pragma mark - 懒加载

- (NSMutableArray *)paths

{

   if (nil == _paths) {

       _paths = [NSMutableArrayarray];

    }

   return _paths;

}


#pragma mark - 清除上一条线

- (void)back

{

    [self.pathsremoveLastObject];

    [selfsetNeedsDisplay];

}


#pragma mark - 清除屏幕

- (void)clear

{

    [self.pathsremoveAllObjects];

    [selfsetNeedsDisplay];

}


#pragma mark - 记录手指按下时的起点到最后一条路径当中

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

   CGPoint startPoint = [[touches anyObject] locationInView:self];

    UIBezierPath *path = [UIBezierPathbezierPath];

    [pathmoveToPoint:startPoint];

    [self.pathsaddObject:path];

    [selfsetNeedsDisplay];

}



#pragma mark - 记录手指再画板上移动的时候的点到最后一条路径当中

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

{

   CGPoint currentPoint = [[touches anyObject] locationInView:self];

    [[self.pathslastObject] addLineToPoint:currentPoint];

    [selfsetNeedsDisplay];

}


#pragma mark - 记录手指抬起的时候的终点到最后一条路径当中

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

{

   CGPoint endPoint = [[touches anyObject] locationInView:self];

    [[self.pathslastObject] addLineToPoint:endPoint];

    [selfsetNeedsDisplay];

}


#pragma mark - 遍历数组画出所有的路径

- (void)drawRect:(CGRect)rect {

    [self.pathsenumerateObjectsUsingBlock:^(UIBezierPath *path,NSUInteger idx, BOOL *stop) {

        [pathstroke];

    }];

}


0 0
原创粉丝点击