iOS画板实现

画板实现
1.运行时的长相
  • 图片

  • 对图片布局简单说明:详细请看代码

  • 共有三块:toolbar,view(画图的地方),view(一个进度条,三个按钮,红黑蓝)
2.将按钮进度条拉一些线到控制器中,如下代码
@interface ViewController ()<UINavigationControllerDelegate,UIImagePickerControllerDelegate>
@property (weak, nonatomic) IBOutlet HYLDrawView *drawView;
@end
@implementation ViewController
#pragma mark - clear
- (IBAction)clear:(UIBarButtonItem *)sender {
}
#pragma mark _ cancel
- (IBAction)cancel:(UIBarButtonItem *)sender {
}
#pragma mark - eraser
- (IBAction)eraser:(UIBarButtonItem *)sender {
}
#pragma mark -pickerPhoto
- (IBAction)pickerPhoto:(UIBarButtonItem *)sender {
    UIImagePickerController *pickerVC=[[UIImagePickerController alloc]init];

    pickerVC.delegate=self;

    [self presentViewController:pickerVC animated:YES completion:nil];
}
#pragma mark - save
- (IBAction)save:(UIBarButtonItem *)sender {

}

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
}
#pragma mark - sliderChange
- (IBAction)sliderChange:(UISlider *)sender {
}
#pragma mark - redColor
- (IBAction)redColor:(UIButton *)sender {
}
#pragma mark - blackColor
- (IBAction)blackColor:(UIButton *)sender {
}
#pragma mark - greenColor
- (IBAction)greenColor:(UIButton *)sender {
}
3.知晓一条线怎么画,那么多条线,只需弄个数组,保存所有的路径,path的属性也可以在这个时候保存
  • 手势的添加,以及一个路径添加的时机
#pragma mark - setPan
-(void) setPan{
    UIPanGestureRecognizer *pan= [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)];
    [self addGestureRecognizer:pan];
    self.pathColor=[UIColor blackColor];
    self.lineWidth=1;
}
-(void) pan:(UIPanGestureRecognizer *) pan{
    if (pan.state==UIGestureRecognizerStateBegan) {
        _curP=[pan locationInView:self];
        self.path=[[HYLDrawPath alloc]init];
        [self.path moveToPoint:self.curP];
        self.path.lineWidth=self.lineWidth;
//        [self.pathColor set];
        self.path.pathColor = _pathColor;
        [self.pathArrM addObject:self.path];
    }else if(pan.state==UIGestureRecognizerStateChanged){
        self.curP=[pan locationInView:self];
        [self.path addLineToPoint:self.curP];
        [self setNeedsDisplay];
    }
}
  • 将所有路径画出,还要注意一个问题:那就是何时触发重绘的问题
#pragma  mark -drawRect
- (void)drawRect:(CGRect)rect {
    for (HYLDrawPath *path in self.pathArrM) {
        if ([path isKindOfClass:[UIImage class]]) {
            UIImage *image=(UIImage *) path;
            [image drawAtPoint:CGPointZero];
        } else {

            [path.pathColor set];
            [path stroke];
        }
    }
}
3.其它简单,注意两个问题
  • 1.当无法从storyboard中向代码不能拖线时,可以先写上代码向storyboard中拖线
  • 2.因为绘画控件类型是自己定义的类,那么定义类中的属性在拖线时,也就带了过来,设置其属性
4.保存图片至相册时,在无法解决问题时,可以点进去,看一下API,这对不熟悉的东西,猜测学习的一种方式
  • 看图
  • 它给出了解决的方案
5.图形上下文绘图以前做了详细说明
5.源代码详细地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值