画板

作者: 彼岸的黑色曼陀罗 | 来源:发表于2016-09-13 19:30 被阅读0次

    画板

    搭建界面

    • 顶部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

    相关文章

      网友评论

          本文标题:画板

          本文链接:https://www.haomeiwen.com/subject/xuomettx.html