如何从PencilKit中的PKInkingTool设置笔触的恒定宽度

问题描述

当使用带有Pencilkit API的手指/铅笔在屏幕上绘画时,我想将笔触的宽度设置为一个常数。当前,PKInkingTool中的宽度设置仅在用手指或铅笔绘制时设置基线宽度,并且如果人们用手指/铅笔进行慢速或快速笔划,则宽度会变化。

我不确定如何设置一个最小的示例,有很多代码可以使Pencilkit View正常工作。您可以使用Apple的this example来设置一个简单的绘图应用程序。

这是我的代码,用于选择认的绘图工具:

canvas.tool = PKInkingTool(.pen,color: .white,width: 10)

其中canvasPKCanvasView对象。每个InkType(link to docs)中都有一个validWidthRange属性,但是我不确定这是否可以帮助我实现所需的目标。

解决方法

我已经找到了一个解决方案(感谢Will Bishop),但是我不确定这对每个人都是最好的。我通过以固定宽度完成笔划后重画它来解决它。苹果在WWDC2020 for iOS 14上发布了PKStrokePKStrokePoint的新API。这是我代码的相关部分(newDrawing是具有恒定笔划宽度的新图形,而canvasView指的是我的PKCanvas上的当前图形:

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: UIColor.white),path: newPath))
     }
let newDrawing = PKDrawing(strokes: newDrawingStrokes)

这是我编写的一些初步代码,因此,如果您发现任何错误/错误,请告诉我!