Установка типа ластика на растровое изображение для PencilKit (iOS)

Используя PencilKit для iOS, как мне установить инструмент ластика на.bitmap для PKToolPicker?

Я не могу найти никаких настроек для PKToolPicker. Попытка использовать PKCanvasView для наблюдения и установки параметра eraserType как.bitmap также не работает.

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

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

2 ответа

В 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
}

Сообщите мне, сработало ли это!

Применимо к 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)
    }
}
Другие вопросы по тегам