画板

画板

搭建界面

  • 顶部view
    • UIToolbar,会自动对里面的控件做自动布局
    • 在toolbar里面拖入item
    • 保存按钮在最右侧Flexible Space
    • 隐藏状态栏:prefersStatusBarHidden YES
  • 底部view
    • ios9之后才出来的StackView
    • 在stackview里面添加button
    • stackView属性
      • distribution:fillEqually
      • spacing 20

画图

  • 绑定drawView
  • 添加手势Pan _ awakeFromNib
  • pan手势方法里面画线
    • 判断手势状态
      • begin:
        • 创建路径,搞一个成员属性,保存路径(能不能写在awakeFromNib中?--可以,一个路径可以描述多条线-->但是,一个路径只能对应一个状态,示例程序里每一个路径都是不同的状态)
        • 获取当前手指的点
        • moveToPoint
      • change:
        • 添加线到手指所在的点
  • 搞一个数组,记录绘制的所有路径

设置线的状态属性

  • 清屏、撤销、橡皮擦、选择颜色、设置线宽(应该写到画板里面)
  • 在画板内部提供方法,谁的事情谁来处理
  • 清屏
    • 清空数组self.pathArray removeAllObjects
    • 重绘 setNeedsDisplay
  • 撤销
    • 删除数组中最后一个元素
    • 重绘
  • 设置颜色
    • 颜色只能在drawRect方法里面设置
    • 自定义路径
      • 定义一个属性,记录当前路径的颜色
    • drawView
      • 定义颜色属性
    • drawRect:绘制颜色
  • 设置线宽
    • 下一次手指开始拖动的路径
    • 定义一个成员属性lineWidth
    • 设置默认线宽为1
    • 线的连接样式joinRound
    • 设置顶角样式CapStyle:Round
  • 橡皮擦
    • setColor whiteColor

保存照片到系统相册

  • 把绘制的内容保存到系统相册中
  • 对画板生成一张图片,把图片写到系统相册
    • 开启位图上下文(画板的大小)
    • renderInContext:
    • 生成一张图片
    • 关闭上下文
  • 写到系统相册
    • UIImageWriteToSavePhotosAlbum(写入哪张图片,写入完成时调用哪个方法,其他信息) 第一次执行这个代码会弹出一个框
    • completionSelector,写入完成时候调用的方法,必须按照要求规范去写,不能瞎写image:didFinishSavingWithError:

从系统相册中选择照片

  • 从底部modal出相册
  • 系统提供的控制器
  • 弹出系统相册选择控制器
    • UIImagePickerController
    • self presentViewController:animated:
  • 设置照片的来源
    • .sourceType
      • libray
      • camera
      • album
  • 点击照片的时候,把照片给画板
    • 代理(里三步系统做好了)
    • .delegate = self
    • 遵守协议:两个协议
    • UINavigationControllDelegate
    • UIPickerControllerDelegate
    • imagePickerController:代理方法
      • info:字典%@打印一下
      • drawView定义image属性
      • 重写setImage方法
      • 图片也要放到数组当中去
      • OC当中数组可以放两种不同的数据类型,但是swift不可以
    • drawRect:方法中判断如果是图片就采用图片的画法,如果不是就是路径
      • image:drawInRect
    • 代理方法中,添加imageView,添加手势
    • pan.view就是手势所在的view
    • 允许支持多个手势
  • 长按手势
    • 开始的时候闪一下,改alpha值
    • 把图片绘制到画板中
      • 截屏
    • UIImageView不可以,用UIView试一下
      • 透明的UIView
      • UIImageView添加到UIView里面
      • 手势还是加给UIImageView
      • 长按手势的时候,对UIView截屏
      • HandleView
      • 代理
  • 手动dismiss

你可能感兴趣的:(画板)