Установка типа ластика на растровое изображение для 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)
}
}