Drawsana 0.12.0
Drawsana 是一个用于在 iOS 上创建自由手绘视图的通用框架。您可以让用户在图片上涂鸦,添加形状和文本,甚至创建自己的工具。
您是否想让用户标注图片?您是否在编写一个简单的绘画应用程序?Drawsana 可能适合您!
喜欢您所看到的?加入我们工作!
功能
- 内置工具
- 带线条平滑功能的笔
- 橡皮擦
- 椭圆、矩形、线、箭头
- 选择
- 文本
- 撤销/重做
- 绘图支持
Codable
,因此您可以保存和加载它们 - 可扩展——无需复制库,您就可以创建自己的形状和工具
安装
将 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()
清除了重做栈中的所有重做操作。DrawingToolForShapeWithThreePoints
和DrawingToolForShapeWithTwoPoints
被声明为open
而不是public
,以便它们可以被子类化。PenShape
现在与选择工具一起工作。DrawsanaView.selectionIndicatorAnchorPointOffset
允许在更改锚点时使 Drawsana 保持工作。Shape.id
现在可设置。- 修复了阻止某些语言(包括中文)字符输入的bug。
- 修复了手势识别器中的bug。
0.10.0
- 转换为Swift 5
- 修复了
NgonShape
和TextShape
的序列化bug。旧数据无法修复,但新数据将正确。 - 反序列化错误报告更详细。只要启用
Drawing.debugSerialization
,发现具有正确类型的JSON对象的形状现在会引发错误,而不是整个操作静默失败。 - 替换
DrawingView.drawing
现在进行得正确,而不是不可用。 PenLineSegment
的成员现在是公开的。ShapeTransform
和PenLineSegment
现在是Equatable
。
0.9.4
- 星形、三角形、五边形和角度工具
DrawsanaView.render()
接受一个scale
参数,而不是始终使用零
0.9.2
- 转换为Swift 4.2
- CocoaPods 支持
0.9.1
DrawsanaView.selectionIndicatorViewShapeLayer
被公开,允许您更容易地自定义选择指示器的外观DrawsanaView.selectionIndicatorView
的样式更改在更少的情况下被动画化,这更符合用户意图- 改进了演示应用程序中的文本工具使用
0.9.0
初始发布