2

在 iOS 上使用 PencilKit,如何将橡皮擦工具设置为 .bitmap 用于 PKToolPicker?

我找不到 PKToolPicker 的任何设置。尝试使用 PKCanvasView 观察并将工具的擦除器类型设置为 .bitmap 也不起作用。

override func toolPickerSelectedToolDidChange(_ toolPicker: PKToolPicker) {
    var tool = toolPicker.selectedTool as? PKEraserTool

    if tool != nil {
        tool?.eraserType = .bitmap
    }
}
4

2 回答 2

0

ThePKEraser是一个结构,因此当您更改它时eraserType,您实际上是在修改画布中正在使用的工具的副本。

您需要做的只是设置PKCanvasView tool属性,它会工作。

override func toolPickerSelectedToolDidChange(_ toolPicker: PKToolPicker) {
    var tool = toolPicker.selectedTool as? PKEraserTool

    if tool != nil {
        tool?.eraserType = .bitmap
    }

    // this line below will do the trick
    canvasView.tool = tool
}

让我知道它是否有效!

于 2020-06-20T01:01:59.927 回答
0

适用于 iOS 13 和 iOS 14

要将 toolpicker 的选定工具设置为位图橡皮擦(其中 toolPicker 是 PKToolPicker):

toolPicker?.selectedTool = PKEraserTool(.bitmap)

要将画布视图的工具设置为位图橡皮擦(其中 canvasView 是 PKCanvasView):

canvasView.tool = PKEraserTool(.bitmap)

根据您的示例,即使选择了矢量(对象橡皮擦),此代码也会将工具选择器的擦除工具保留为位图(像素橡皮擦)。(在 iOS 14 上测试)

func toolPickerSelectedToolDidChange(_ toolPicker: PKToolPicker) {

    if toolPicker.selectedTool is PKEraserTool {
        toolPicker.selectedTool = PKEraserTool(.bitmap)
    }
}
于 2020-06-26T01:43:34.557 回答