zoukankan      html  css  js  c++  java
  • iOS开发之自定义画板

      今天整好有时间, 写了一个自定义的画板!  [我的github]

    GLPaint主要采用QuartzCore框架, 对画布上的元素进行渲染, 然后通过UIImageWriteToSavedPhotosAlbum保存到相册.

    代码耦合性比较低, 集成比较简单, 初学者可以了解一下.

    1. 在ViewController中只需要实现这几个方法基本就没问题了;

     1 #pragma mark - 创建colorPiker
     2 - (void)setupColorPiker
     3 {
     4     _piker = [ColorPicker colorPickerWithFrame:CGRectMake(0, 64, PP_SCREEN_WIDTH, 130)];
     5     _piker.delegate = self;
     6     [self.view addSubview:_piker];
     7     
     8 }
     9 
    10 
    11 #pragma mark - 创建PaintView
    12 - (void)setupPaintView
    13 {
    14     _paintView = [PaintView paintView];
    15     _paintView.backgroundColor = [UIColor colorWithWhite:0.9 alpha:.95];
    16 
    17     // 设置线宽
    18     _paintView.lineWidth = 8.0f;
    19     [self.view addSubview:_paintView];
    20     
    21     // 约束
    22     [_paintView mas_makeConstraints:^(MASConstraintMaker *make) {
    23         make.edges.equalTo(self.view).insets(UIEdgeInsetsMake(CGRectGetMaxY(_piker.frame) , 5, 0, 5));
    24     }];
    25     
    26 }
    27 
    28 
    29 #pragma mark - ColorPickerDelegate
    30 - (void)aColorPickerDidSelected:(UIColor *)color
    31 {
    32     [_paintView setPaintColor:color];
    33     
    34 }

    2. 保存到相册

     1 #pragma mark - 保存图片到相册
     2 // 监听点击
     3 - (void)saveImage
     4 {
     5     // 获取照片
     6     UIImage *paintImage = [_paintView paintImage];
     7     LogRed(@"%@", paintImage);
     8     
     9     UIImageWriteToSavedPhotosAlbum(paintImage, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), nil);
    10 }
    11 
    12 - (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
    13 {
    14     NSString *message = @"";
    15     if (!error) {
    16         message = @"成功保存到相册";
    17     }else
    18     {
    19         message = [error description];
    20     }
    21     LogRed(@"message is %@",message);
    22 }
  • 相关阅读:
    Click: 命令行工具神器
    Pipenv: Python包管理神器
    如何让你的Python程序支持多语言
    Volatile变量
    简单排查java应用CPU飙高的线程问题
    java中的clone
    接口限流
    HTTP协议详解
    [转]nginx 源码学习笔记(十五)—— ngx_master_process_cycle 多进程(一)
    nginx slab内存管理
  • 原文地址:https://www.cnblogs.com/guangleijia/p/5045992.html
Copyright © 2011-2022 走看看