将橡皮擦类型设置为PencilKit的位图(iOS)

时间:2019-09-30 07:39:31

标签: ios13 ipados apple-pencil

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

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

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

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

2 个答案:

答案 0 :(得分:0)

PKEraser是一个结构,因此,当您更改其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
}

让我知道它是否有效! ?

答案 1 :(得分:0)

适用于iOS 13和iOS 14

要将工具选择器的选定工具设置为位图擦除器(其中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)
    }
}