【问题标题】:Setting eraser type to bitmap for PencilKit (iOS)为 PencilKit (iOS) 将橡皮擦类型设置为位图
【发布时间】:2020-01-29 11:40:03
【问题描述】:

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

我找不到 PKToolPicker 的任何设置。尝试使用PKCanvasView观察并设置工具的eraseType为.bitmap也是不行的。

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

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

【问题讨论】:

    标签: ios13 ipados pencilkit apple-pencil


    【解决方案1】:

    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
    }
    

    让我知道它是否有效! ?

    【讨论】:

    • 您好,感谢您的回复。我得到:“PKEraserTool”类型的值?在该附加语句的分配中不符合“PKTool”。
    【解决方案2】:

    适用于 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)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 2012-07-15
      • 2012-09-30
      • 2012-03-02
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      相关资源
      最近更新 更多