Ven*_*kat 6 ios swift pencilkit
当使用 PencilKit API 使用手指/铅笔在屏幕上绘图时,我想将笔画的宽度设置为常量。目前,宽度设置仅PKInkingTool设置用手指或铅笔绘图时的基线宽度,并且如果用手指/铅笔缓慢或快速描画,则宽度会发生变化。
我不确定如何设置一个最小的示例,有很多代码可以让 PencilKit 视图正常工作。您可以使用Apple 的此示例来设置一个简单的绘图应用程序。
这是我选择默认绘图工具的代码:
canvas.tool = PKInkingTool(.pen, color: .white, width: 10)
Run Code Online (Sandbox Code Playgroud)
其中canvas是一个PKCanvasView对象。validWidthRange每个 InkType都有一个属性(链接到文档),但我不确定这是否可以帮助我实现我想要的。
我找到了一个解决方案(感谢Will Bishop),但我不确定这对每个人来说都是最好的。我通过在以恒定宽度完成笔划后重新绘制笔划来解决这个问题。PKStroke苹果在 WWDC2020上为 iOS 14发布了新的 API。PKStrokePoint这是我的代码的相关部分(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)
Run Code Online (Sandbox Code Playgroud)
这是我整理的一些初步代码,所以如果您发现任何错误/错误,请告诉我!
| 归档时间: |
|
| 查看次数: |
1885 次 |
| 最近记录: |