您的位置:首页 > 移动开发 > IOS开发

IOS开发:手势画板涂鸦

2016-01-22 14:07 393 查看
上代码!!!

<span style="font-size:14px;color:#990000;"><span style="background-color: rgb(255, 255, 255);">#import <UIKit/UIKit.h>

@interface DrawControll : UIViewController

@end

</span></span><pre name="code" class="objc">#import "DrawControll.h"
#import "DrawViewB.h"
@interface DrawControll ()
@property (weak, nonatomic) IBOutlet DrawViewB *drawS;

@end

@implementation DrawControll
- (IBAction)breaks:(id)sender {
[self.drawS breakLine];
}
- (IBAction)clearnLine:(id)sender {
[self.drawS clearn];
}
- (IBAction)savePicture:(id)sender {
[self.drawS save];
}
- (void)viewDidLoad {
[self.drawS openPhoto:^{
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:picker animated:YES completion:nil];
}];
[super viewDidLoad];
}

--------------------------------------------------------------------------
#import <UIKit/UIKit.h>

typedef void(^photoBlocl)();
@interface DrawViewB : UIView
@property (nonatomic,copy)photoBlocl myblock;
/**
*  回退
*/
- (void)breakLine;
/**
*  保存
*/
- (void)save;
/**
*  清除
*/
- (void)clearn;
/**
*  打开相册回调
*/
- (void)openPhoto:(photoBlocl)block;
@end

#import "DrawViewB.h"

@interface DrawViewB ()
@property (nonatomic,strong)NSMutableArray* lines;
@end

@implementation DrawViewB
- (NSMutableArray*)lines
{
if (!_lines)
{
_lines = [NSMutableArray array];
}
return _lines;
}
#pragma mark 开始触摸
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch* touch = [touches anyObject];
CGPoint poinit = [touch locationInView:self];
// 创建贝塞尔对象
UIBezierPath* path = [UIBezierPath bezierPath];
// 起始点
[path moveToPoint:poinit];
// 添加到数组
[self.lines addObject:path];
// 绘画
[self setNeedsDisplay];
}
#pragma mark 触摸中
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch* touch = [touches anyObject];
CGPoint poinit = [touch locationInView:self];
[[self.lines lastObject] addLineToPoint:poinit];
[self setNeedsDisplay];

}
#pragma mark 结束触摸
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch* touch = [touches anyObject];
CGPoint poinit = [touch locationInView:self];
[[self.lines lastObject] addLineToPoint:poinit];
[self setNeedsDisplay];
}
#pragma mark 保存图片
- (void)save
{
// 获得图片
UIGraphicsBeginImageContextWithOptions(self.frame.size, YES, 0.0);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* picture = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// 保存到相册
UIImageWriteToSavedPhotosAlbum(picture, nil, nil, nil);

self.myblock();
}
#pragma makr 清除
- (void)clearn
{
[self.lines removeAllObjects];
[self setNeedsDisplay];
}
#pragma mark 回退
- (void)breakLine
{
[self.lines removeLastObject];
[self setNeedsDisplay];
}
- (void)openPhoto:(photoBlocl)block
{
self.myblock = block;
}
- (void)drawRect:(CGRect)rect
{
for (UIBezierPath* path  in self.lines)
{
[path setLineWidth:5];
[path stroke];
}
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios