SwiftyDraw 2.4.1

SwiftyDraw 2.4.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布日期最后发布2020年10月
SPM支持 SPM

Andrew WalzLinus Geffarth 维护。



SwiftyDraw

Platform: iOS 9.1+ Language: Swift 5 CocoaPods License: MIT

概述

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 接受介于 01 之间的任何 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授权协议许可。有关更多信息,请参阅授权协议文件。