swift PencilKit canvasViewDidEndUsingTool委托中出现“绘图计数不匹配!”错误

u59ebvdq  于 5个月前  发布在  Swift
关注(0)|答案(1)|浏览(61)

我正在尝试使用PencilKit制作一个简单的绘图应用程序。然而,当我放大画布时,我希望笔划更细(在视觉上,屏幕上的大小与放大前相同,但一旦我一直放大,结果就会变薄)。此外,我希望笔画始终均匀,这意味着不要根据笔画的速度/时间,Angular ,一个简单的涂鸦板。我已经有一个完全工作的画布,但我不能让这些额外的要求工作。下面是我尝试的:
符合PKCanvasViewDelegate并实现了canvasViewDidEndUsingTool。在那里,我添加了我的代码来自定义笔划,例如这个片段,它将所有内容转换为统一的5x 5笔划:

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!


我刚才画的那一笔就消失了。
我不知道这有什么问题,因为我的代码片段只是迭代现有的笔画,修改它们,然后在绘图上再次设置它们。我没有找到有关此的文档,Google为此错误/警告消息获得了0个结果。
感谢任何帮助。

zour9fqk

zour9fqk1#

对我来说,解决方案是将代码移动到:

func canvasViewDrawingDidChange(_ canvasView: PKCanvasView)

字符串
而不是:

func canvasViewDidEndUsingTool(_ canvasView: PKCanvasView)

相关问题