问题描述
当使用带有Pencilkit API的手指/铅笔在屏幕上绘画时,我想将笔触的宽度设置为一个常数。当前,PKInkingTool
中的宽度设置仅在用手指或铅笔绘制时设置基线宽度,并且如果人们用手指/铅笔进行慢速或快速笔划,则宽度会变化。
我不确定如何设置一个最小的示例,有很多代码可以使Pencilkit View正常工作。您可以使用Apple的this example来设置一个简单的绘图应用程序。
canvas.tool = PKInkingTool(.pen,color: .white,width: 10)
其中canvas
是PKCanvasView
对象。每个InkType(link to docs)中都有一个validWidthRange
属性,但是我不确定这是否可以帮助我实现所需的目标。
解决方法
我已经找到了一个解决方案(感谢Will Bishop),但是我不确定这对每个人都是最好的。我通过以固定宽度完成笔划后重画它来解决它。苹果在WWDC2020 for iOS 14上发布了PKStroke
和PKStrokePoint
的新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)
这是我编写的一些初步代码,因此,如果您发现任何错误/错误,请告诉我!