为什么PKDrawing()!= PKDrawing()? (PencilKit)

时间:2019-08-20 01:06:46

标签: ios13 ipados apple-pencil

根据文档,PKDrawing符合Equatable。但是,如果将2个空白图形与==进行比较,则返回false。我通过反馈应用程序提交了错误,但我在此处发布,希望我错过了一些东西,否则其他人也会提交错误报告,以便可以解决。我需要检查PKCanvasView是否包含任何内容,并且由于PKDrawing是不透明的,因此我们无法查询笔画或其他数据。鉴于api有限,似乎最好的检查方法如下:

extension PKCanvasView {
    func isEmpty() -> Bool {
      return self.drawing == PKDrawing()
    }
}

这将返回false,尽管与canvasView.drawing无关。甚至PKDrawing() == PKDrawing()返回false。

2 个答案:

答案 0 :(得分:1)

在这种情况下,您可以检查绘图对象的 bounds。 iOS 14 提供了此绘图包含的 strokes

extension PKDrawing {
    
    func isEmpty() -> Bool {

        if #available(iOS 14.0, *) {
            return strokes.isEmpty
        } else {
            return drawing.bounds.isEmpty
        }
    }
}

答案 1 :(得分:0)

这是我检查图形是否为空白的方法:

extension PKDrawing {
    var isBlank: Bool {
        get {
             return self.bounds == CGRect(origin: CGPoint(x: CGFloat.infinity, y: CGFloat.infinity), size: .zero)
        }
    }
}