SwiftyDraw
概述
SwiftyDraw 是一个使用 Swift 编写的简单、轻量级的绘图框架。SwiftyDraw 使用 Core Graphics 构建,易于实现。
要求
- iOS 9.1+
- Swift 5.0
安装
Cocoapods
SwiftyDraw可以通过CocoaPods获得。要安装它,请将以下行添加到您的Podfile中
pod 'SwiftyDraw'
Carthage
SwiftyDraw还可以通过Carthage获得。要安装,请将以下行添加到您的Cartfile中
github "awalz/SwiftyDraw" "master"
手动安装
简单地复制源文件夹的内容到您的项目中。
使用方法
使用SwiftyDraw非常简单
入门
创建一个SwiftyDrawView并将其添加到您的ViewController中
let drawView = SwiftyDrawView(frame: self.view.frame)
self.view.addSubview(drawView)
默认情况下,视图将自动响应用户手势并开始绘图。默认画笔是.default
,字体颜色为黑色。
要禁用绘图,只需将isEnabled
属性设置为false
drawView.isEnabled = false
画笔
为了绘图,我们使用Brush
来跟踪样式,如宽度
、颜色
等。我们提供了多种不同的默认画笔,您可以使用以下方式
drawView.brush = Brush.default
默认的画笔有
public static var `default`: Brush { get } // black, width 3
public static var thin : Brush { get } // black, width 2
public static var medium : Brush { get } // black, width 7
public static var thick : Brush { get } // black, width 10
public static var marker : Brush { get } // flat red-ish, width 10
public static var eraser : Brush { get } // clear, width 8; uses CGBlendMode to erase things
调整宽度因子
SwiftyDrawView
支持调整角度的画笔。这实际上意味着,如果用户(使用 Pencil)用笔尖绘制,画笔的宽度会稍微减小。如果用户以非常低的角度用铅笔侧面绘制,画笔会稍微宽一些。您可以通过设置画笔的 adjustedWidthFactor
来修改这种行为。如果您增加数字(比如 5
),变化会更大。如果将数字减少到 0
,则不会调整宽度。默认值为 1
,这会导致宽度略有增大/减小。
这是一个可选功能。这意味着在 shouldBeginDrawingIn
中,您需要调用 drawingView.brush.adjustWidth(for: touch)
。
进一步自定义
为了进行更多自定义,您可以根据需要修改画笔的不同属性。
线条颜色
可以通过调整画笔的 color
属性来更改线条画笔的颜色。SwiftyDraw 接受任何 Color
drawView.brush.color = Color(.red)
或者
drawView.brush.color = Color(UIColor(colorLiteralRed: 0.75, green: 0.50, blue: 0.88, alpha: 1.0))
我们有自己的 UIColor
实现 – Color
– 用于解码/编码它。
线条宽度
可以通过调整画笔的 width
属性来更改线条宽度。SwiftyDraw 接受任何正数 CGFloat
drawView.brush.width = 5.0
线条不透明度
可以通过调整 lineOpacity
属性来更改线条的不透明度。SwiftyDraw 接受介于 0
和 1
之间的任何 CGFloat
drawView.brush.opacity = 0.5
编辑
清除全部
如果您想清除整个画布,只需调用 clear
函数
drawView.clear()
绘图历史
drawView.undo()
...以及重做
drawView.redo()
要启用/禁用自定义的撤销和重做按钮,您可以使用 .canUndo
和 .canRedo
。
苹果铅笔集成
苹果铅笔可以在 SwiftyDrawView 中用于绘图,就像手指一样。
然而,关于 Apple Pencil 2 的特殊功能只能在 iOS 12.1 及以上版本的支持上。
苹果铅笔 2 双击动作
启用/禁用铅笔交互
苹果铅笔交互默认启用,但您可以将 drawView.isPencilInteractive
设置来改变这一设置。
铅笔事件
当双击铅笔时,SwiftyDraw会检查系统设置的用户的偏好。如果偏好设置为切换到橡皮擦,SwiftyDraw将在普通模式和擦除模式之间切换;如果设置为由上次使用的工具,SwiftyDraw将在当前刷子和前一个刷子之间切换。
代理
SwiftyDraw有代理函数,在用户与SwiftDrawView交互时通知您。要访问这些代理方法,让您的视图控制器遵守SwiftyDrawViewDelegate
协议。
class ViewController: UIViewController, SwiftyDrawViewDelegate
代理方法
func swiftyDraw(shouldBeginDrawingIn drawingView: SwiftyDrawView, using touch: UITouch) -> Bool
func swiftyDraw(didBeginDrawingIn drawingView: SwiftyDrawView, using touch: UITouch)
func swiftyDraw(isDrawingIn drawingView: SwiftyDrawView, using touch: UITouch)
func swiftyDraw(didFinishDrawingIn drawingView: SwiftyDrawView, using touch: UITouch)
func swiftyDraw(didCancelDrawingIn drawingView: SwiftyDrawView, using touch: UITouch)
贡献
此项目由Awalz创建,并由LinusGeffarth主要负责维护和改进。
如果您想提出任何增强、错误修复等,请随时创建相应的拉取请求或问题单。
联系
如果您有任何问题,或者只是想打个招呼你好!,您可以通过Twitter或电子邮件联系我。
授权协议
SwiftyDraw受MIT授权协议许可。有关更多信息,请参阅授权协议文件。