Drawsana 0.12.0

Drawsana 0.12.0

Steve LandeyNickie PucelDominik GruberEdwin LaiNiranjan Ravichandran 维护。



Drawsana 0.12.0

  • Steve Landey

Drawsana 0.12.0

Drawsana 是一个用于在 iOS 上创建自由手绘视图的通用框架。您可以让用户在图片上涂鸦,添加形状和文本,甚至创建自己的工具。

您是否想让用户标注图片?您是否在编写一个简单的绘画应用程序?Drawsana 可能适合您!

演示源代码

文档

喜欢您所看到的?加入我们工作!

功能

  • 内置工具
    • 带线条平滑功能的笔
    • 橡皮擦
    • 椭圆、矩形、线、箭头
    • 选择
    • 文本
  • 撤销/重做
  • 绘图支持 Codable,因此您可以保存和加载它们
  • 可扩展——无需复制库,您就可以创建自己的形状和工具

screenshot

安装

Asana/Drawsana 添加到 Cartfile,并像添加其他 Carthage 框架一样更新您的项目,或者克隆源代码并将项目添加到您的工作区。

github "Asana/Drawsana" == 0.12.0

使用

import Drawsana

class MyViewController: UIViewController {
  let drawsanaView = DrawsanaView()
  let penTool = PenTool()
  
  func viewDidLoad() {
    /* ... */
    drawsanaView.set(tool: penTool)
    drawsanaView.userSettings.strokeWidth = 5
    drawsanaView.userSettings.strokeColor = .blue
    drawsanaView.userSettings.fillColor = .yellow
    drawsanaView.userSettings.fontSize = 24
    drawsanaView.userSettings.fontName = "Marker Felt"
  }
  
  func save() {
    let jsonEncoder = JSONEncoder()
    jsonEncoder.outputFormatting = [.prettyPrinted, .sortedKeys]
    let jsonData = try! jsonEncoder.encode(drawingView.drawing)
    // store jsonData somewhere
  }
  
  func load() {
    let data = // load data from somewhere
    let jsonDecoder = JSONDecoder()
    let drawing = try! jsonDecoder.decode(Drawing.self, from: jsonData)
    drawsanaView.drawing = drawing
  }
  
  func showFinalImage() {
    imageView.image = drawsanaView.render() 
  }
}

背景图片

Drawsana 目前没有自动显示绘图下图片的功能。我们建议,就像示例类中那样,在 DrawsanaView 下添加一个 UIImageView,并确保 DrawsanaView 的 frame 与图片 frame 匹配。在获取最终图像时,请使用 DrawsanaView.render(over: myImage)

构建文档

sudo gem install jazzy
make docs
open .docs/index.html

pip install ghp-import
make publish-docs
open https://asana.github.io/Drawsana

更新日志

0.12.0

  • 撤销操作现在可以在框架外部访问,以便您可以使用自己的 UI 进行可撤销更改。
    • 添加形状操作
    • 删除形状操作
    • 更改转换操作
    • 编辑文本操作
    • 更改显式宽度操作
  • 修复调整大小后绘图视图没有重新绘制的bug。
  • 修复与颜色序列化的相关bug。
  • 修复与文本输入相关的bug。

0.11.0

  • DrawingOperationStack.clearRedoStack() 清除了重做栈中的所有重做操作。
  • DrawingToolForShapeWithThreePointsDrawingToolForShapeWithTwoPoints 被声明为 open 而不是 public,以便它们可以被子类化。
  • PenShape 现在与选择工具一起工作。
  • DrawsanaView.selectionIndicatorAnchorPointOffset 允许在更改锚点时使 Drawsana 保持工作。
  • Shape.id 现在可设置。
  • 修复了阻止某些语言(包括中文)字符输入的bug。
  • 修复了手势识别器中的bug。

0.10.0

  • 转换为Swift 5
  • 修复了 NgonShapeTextShape 的序列化bug。旧数据无法修复,但新数据将正确。
  • 反序列化错误报告更详细。只要启用 Drawing.debugSerialization,发现具有正确类型的JSON对象的形状现在会引发错误,而不是整个操作静默失败。
  • 替换 DrawingView.drawing 现在进行得正确,而不是不可用。
  • PenLineSegment 的成员现在是公开的。
  • ShapeTransformPenLineSegment 现在是 Equatable

0.9.4

  • 星形、三角形、五边形和角度工具
  • DrawsanaView.render() 接受一个 scale 参数,而不是始终使用零

0.9.2

  • 转换为Swift 4.2
  • CocoaPods 支持

0.9.1

  • DrawsanaView.selectionIndicatorViewShapeLayer 被公开,允许您更容易地自定义选择指示器的外观
  • DrawsanaView.selectionIndicatorView 的样式更改在更少的情况下被动画化,这更符合用户意图
  • 改进了演示应用程序中的文本工具使用

0.9.0

初始发布