我正在使用 swift PencilKit 开发一个简单的绘图 iOS 应用程序。
我计划
如果你用苹果铅笔或其他触控笔触摸
- 画线(将 PKInkingTool 设置为画布的工具)
否则(用手指)
- 擦除线条(将 PKEraserTool 设置为画布的工具)
所以,你可以用铅笔画线,然后用手指擦掉
但也有困难。即使它在绘图时更改工具,更改的画布工具也不会立即反映出来。当您将手(或铅笔)从屏幕上移开时会反映出来。
绘图时如何正确反映更改后的工具?
我的代码是这个
import PencilKit
class MyPKCanvasView: PKCanvasView {
private enum toolType:String {
case pen
case erazer
}
private let pen = PKInkingTool(.pen, color: .black, width: 30)
private let erazer = PKEraserTool(.bitmap)
private var currentTool: toolType = .pen {
willSet {
switch newValue {
case .pen:
self.tool = self.pen
case .erazer:
print("changed:eraser")
self.tool = self.erazer
}
}
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
switch touch.type {
case .pencil:
fallthrough
case .stylus:
print("pen")
self.changeTool(.pen)
default:
print("finger")
self.changeTool(.erazer)
}
}
}
private func changeTool(_ tool: toolType) {
if self.currentTool == tool {
return
}
self.currentTool = tool
}
}