首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止用户用PencilKit - Swift擦除图纸

防止用户用PencilKit - Swift擦除图纸
EN

Stack Overflow用户
提问于 2021-12-16 20:50:47
回答 1查看 118关注 0票数 1

我正在使用PencilKit构建一个绘图应用程序,我有一个预装的PKDrawing,其中装载了PKCanvasView。我的目标是允许用户使用预加载的PKDrawing作为参考来玩画布。我的问题是:是否有可能使预加载的PKDraw不可擦除?请注意,我不想完全阻止橡皮擦工具,用户必须能够擦除自己的绘图,但不是参考之一。

EN

回答 1

Stack Overflow用户

发布于 2022-12-04 07:55:47

这是解决这一问题的另一种方式。这是我的工作。

让我试着举例说明一下。在这里,我只删除高亮笔和重新绘制在同一画布上的其他路径。所以看起来就像只移除荧光笔,而不是其他文本。

我在这里已经提到了你需要遵循的四个步骤

步骤1>在类中声明临时变量

代码语言:javascript
复制
var tempPKDrawing: PKDrawing?

步骤2>现在添加此PKCanvasViewDelegate方法

代码语言:javascript
复制
 // MARK: Canvas View Delegate
extension PKCanvas: PKCanvasViewDelegate {

  /// Delegate method: Note that the drawing has changed.
  public func canvasViewDrawingDidChange(_ canvasView: PKCanvasView) {
    print("canvasViewDrawingDidChange\(canvasView.drawing)")
    print ("toolPicker isVisible:\(toolPicker?.isVisible)")

//****** STEP 4> ******
    //Remove Highlighter text
    if canvasView.tool is PKEraserTool, let tempDrawing = self.tempPKDrawing {
      if canvasView.drawing.strokes.count != tempDrawing.strokes.count {
        var newDrawing : [PKStroke] = tempDrawing.strokes.filter({$0.ink.inkType != .marker})
        newDrawing += canvasView.drawing.strokes.filter({$0.ink.inkType == .marker})
        self.tempPKDrawing = nil
        self.canvasView?.drawing = PKDrawing(strokes: newDrawing)
      }
    }

  }

  public func canvasViewDidBeginUsingTool(_ canvasView: PKCanvasView) {
    print("canvasViewDidBeginUsingTool:\(canvasView.drawing)")

//****** STEP 3> ******
    if canvasView.tool is PKEraserTool {
      self.tempPKDrawing = canvasView.drawing
    }
    //canvasView.drawingPolicy = PKEraserToolReference(eraserType: .)
  }
  public func canvasViewDidEndUsingTool(_ canvasView: PKCanvasView) {
    print("canvasViewDidEndUsingTool")
  }
  public func canvasViewDidFinishRendering(_ canvasView: PKCanvasView) {
    print("canvasViewDidFinishRendering")
  }
}

谢谢库尔;)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70385470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档