我正在尝试使用 PencilKit 组合一个简单的绘图应用程序。但是,当我在画布上放大时,我希望笔触更细(在屏幕上视觉上与放大之前的尺寸相同,但一旦我完全放大,结果会更细)。此外,我希望笔画始终保持一致,这意味着不要根据笔画的速度/时间、角度等改变其大小。一个简单的涂鸦板。我已经有一个完整的绘图画布,但我无法满足这些额外的要求。这是我尝试过的:
符合PKCanvasViewDelegate
并执行canvasViewDidEndUsingTool
。在那里,我添加了我的代码来自定义笔画,例如这个片段将所有内容转换为具有统一的 5x5 笔画:
func canvasViewDidEndUsingTool(_ canvasView: PKCanvasView) {
dump(canvasView.drawing.strokes.count)
var newDrawingStrokes = [PKStroke]()
for stroke in canvasView.drawing.strokes {
var newPoints = [PKStrokePoint]()
stroke.path.forEach { (point) in
let newPoint = PKStrokePoint(
location: point.location,
timeOffset: point.timeOffset,
size: CGSize(width: 5,height: 5),
opacity: CGFloat(1),
force: point.force,
azimuth: point.azimuth,
altitude: point.altitude
)
newPoints.append(newPoint)
}
let newPath = PKStrokePath(controlPoints: newPoints, creationDate: Date())
newDrawingStrokes.append(PKStroke(ink: PKInk(.pen, color: .white), path: newPath))
}
let newDrawing = PKDrawing(strokes: newDrawingStrokes)
canvasView.drawing = newDrawing
}
当我在画布上完成描边时,会调用此委托。但是,在canvasView.drawing = newDrawing
最后一行调用时,我在控制台上得到了这个日志:
[] Drawing count mismatch!
我刚刚画的笔画消失了。
我不知道这有什么问题,因为我的代码片段只是简单地遍历现有笔画,修改它们,然后在绘图上再次设置它们。我没有找到与此相关的文档,谷歌为此错误/警告消息获得了 0 个结果。
感谢任何帮助。