这次介绍一个比较复杂一些的小demo,一个简洁的画板,主要知识点是利用贝塞尔曲线–UIBezierPath
这个类去实现手动画线的操作,这个操作在很多app中电子签名这个功能中都曾用到。 先看看示例图,这个小画板有哪些工能
1、基本的画线,可以写字,你可以滑动滑块控制画线的粗细,点击最下方颜色按钮改变画线的颜色
2、点击“撤销”,可以清除你上一步的操作,不断点击,可以不断撤销。如果点击“清屏”,就会清除所有
3、点击“橡皮擦”,可以抹掉屏幕上已经画出的线,滑动滑块可以改变橡皮擦的宽度
4、点击“照片”,可以进入系统相册选择图片
5、可以对图片进行拖动、旋转、放大缩小,然后长按图片,图片会定住,这时候可以在画板上画线
6、点击“保存”,会将你绘制的内容以图片的形式保存到系统相册中
一 、UI控件的布局,如下图,我在storyboard中直接拖入的,绿色区域包含一个toolBar、5个item和1个弹簧,红色区域是1个view,蓝色区域是一个view里包含3个button和1个slider。我直接将这个item和button的action方法拖入到ViewController
中
二、 我的项目中新增了两个view,“imageHandleView”和“drawView”; 另外自定义了一个UIBezierPath
类,“DrawPath”
三、 首先要写的是DrawView
,在这个类里把相应的属性和方法写好,等ViewController
调用
- DrawView.h
#import <UIKit/UIKit.h>
@interface DrawView : UIView
/**线宽*/
@property(nonatomic,assign)NSInteger lineWidth;
/**颜色*/
@property(nonatomic,strong)UIColor * pathColor;
/**照片*/
@property(nonatomic,strong)UIImage * imageDraw;
//清屏
-(void)clear;
//撤销
-(void)undo;
@end
- DrawView.m
#import "DrawView.h"
#import "DrawPath.h"
@interface DrawView()
/**
自定义的路径
*/
@property(nonatomic,strong)DrawPath * path;
/**路径数组*/
@property(nonatomic,strong)NSMutableArray * pathArr;
@end
@implementation DrawView
-(