iOS简单画板开发案例分享

2020-01-15 13:58:57于丽
这篇文章主要为大家分享了iOS实现简单画板开发案例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下  

最近在学习Quartz2D,学习了一个简单画板的实现,现在把实现过程记录一下。

主要用到的点就是画线,截屏,绘制图片,选择图片,以及保存所有绘制的线。

首先在storyboard上布局好控件,设置约束等等,最后的效果是这样:

iOS开发,画板

自定义画板DrawView,使用时可能是从xib中加载,也可能是手动创建,所以创建对象的方法需要实现两个:


#import <UIKit/UIKit.h>
 
@interface DrawView : UIView
/** 线宽 */
@property (nonatomic, assign) NSInteger lineWidth;
 
/** 颜色 */
@property(nonatomic, strong) UIColor *pathColor;
 
/** 图片 */
@property(nonatomic, strong) UIImage *image;
 
- (void)clear;
 
- (void)undo;

- (void)awakeFromNib {
   
  [self setUp];
   
}
 
- (instancetype)initWithFrame:(CGRect)frame {
   
  if (self == [super initWithFrame:frame]) {
    [self setUp];
  }
  return self;
}

setUp初始化方法,初始化时要做的事情就是给画板添加拖动手势,也可以将画笔路径的线宽在这里设置


//自定义初始化方法
- (void)setUp {
   
  //添加手势
  UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)];
  [self addGestureRecognizer:pan];
   
  //初始化时设置路径线宽
  _lineWidth = 2;
   
}

手指在画板上移动时开始绘制线条,这里因为原生的UIBezierPath类没有办法设置路径颜色,所以这里只能自定义Path类了   


#import <UIKit/UIKit.h>
 
@interface DrawPath : UIBezierPath
 
@property (nonatomic, strong) UIColor *pathColor;
 
@end

手指移动时,绘制线条,路径是自定义的Path类


@interface DrawView ()
 
@property(nonatomic, strong)DrawPath *path;
/** 保存所有路径的数组 */
@property(nonatomic, strong) NSMutableArray *pathArr;
 
@end
 
//懒加载
- (NSMutableArray *)pathArr {
  if (_pathArr == nil) {
     
    _pathArr = [NSMutableArray array];
     
  }
  return _pathArr;
}