IOS开发:手势画板涂鸦

上代码!!!

<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];
    }
}


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值