2

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

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

不管canvasView.drawing如何,这都会返回false。甚至,PKDrawing() == PKDrawing()返回 false。

4

2 回答 2

2

在这种情况下,您可以检查bounds绘图对象。并且 iOS 14 已经提供strokes了这个绘图包含。

extension PKDrawing {
    
    func isEmpty() -> Bool {

        if #available(iOS 14.0, *) {
            return strokes.isEmpty
        } else {
            return drawing.bounds.isEmpty
        }
    }
}
于 2021-06-22T14:20:28.643 回答
0

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

extension PKDrawing {
    var isBlank: Bool {
        get {
             return self.bounds == CGRect(origin: CGPoint(x: CGFloat.infinity, y: CGFloat.infinity), size: .zero)
        }
    }
}
于 2020-06-12T19:46:47.873 回答