ios - 如何从 PencilKit 中的 PKInkingTool 设置笔画的恒定宽度

标签 ios swift pencilkit

当使用手指/铅笔和 PencilKit API 在屏幕上绘图时,我想将笔画的宽度设置为常量。目前,宽度设置在说 PKInkingTool仅在用手指或铅笔绘图时设置基线宽度,如果用手指/铅笔进行慢速或快速笔触,宽度会有所不同。
我不确定如何设置最小示例,有很多代码可以使 PencilKit View 正常工作。您可以使用 this example从 Apple 设置一个简单的绘图应用程序。
这是我选择默认绘图工具的代码:

canvas.tool = PKInkingTool(.pen, color: .white, width: 10)
哪里canvasPKCanvasView目的。有一个validWidthRange每个 InkType ( link to docs ) 中的属性,但我不确定这是否可以帮助我实现我想要的。

最佳答案

我找到了一个解决方案(感谢 Will Bishop ),但是我不确定它是否适合所有人。我通过在以恒定宽度完成后重新绘制笔划来解决它。 Apple 为 PKStroke 发布了新的 API和 PKStrokePoint 在 WWDC2020 for iOS 14。这是我的代码的相关部分( 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)
这是我整理的一些初步代码,所以如果您发现任何错误/错误,请告诉我!

关于ios - 如何从 PencilKit 中的 PKInkingTool 设置笔画的恒定宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63620991/

相关文章:

swift 3 : AppDelegate does not conform to protocol GIDSignInDelegate

ios - SwiftUI 中的 PencilKit

ios - NSURLSession 错误处理

ios - 在 Swift 中从异步数据更新 TableView

ios - Swift:显示键盘时更改自动布局约束

ios - 将当前用户存储在核心数据中

javascript - 在 IOS 上的 Safari/Chrome 中无法使用 Cache-API,对吗?

android - Xamarin Android 中的设备 ID 意味着什么 Azure 推送通知?如何获得?

swift - iOS 14 上的 PKToolPicker 颜色选择器暗模式