使用iOS的PencilKit,如何将PKToolPicker的橡皮擦工具设置为.bitmap?
我找不到PKToolPicker的任何设置。尝试使用PKCanvasView观察该工具的橡皮擦类型并将其设置为.bitmap也不起作用。
override func toolPickerSelectedToolDidChange(_ toolPicker: PKToolPicker) {
var tool = toolPicker.selectedTool as? PKEraserTool
if tool != nil {
tool?.eraserType = .bitmap
}
}
答案 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)
}
}