为什么 PKDrawing() != PKDrawing()? (铅笔盒)
Why does PKDrawing() != PKDrawing()? (PencilKit)
根据文档,PKDrawing 符合 Equatable。但是如果用==比较2张空白的图,就return错了。我通过反馈应用程序提交了一个错误,但我在这里发帖希望我错过了一些东西,或者其他人也会提交错误报告以便修复这个问题。我需要检查 PKCanvasView 是否有任何内容,并且由于 PKDrawing 是不透明的,我们无法查询笔画或其他数据。鉴于有限的api,似乎最好的检查方法是这样的:
extension PKCanvasView {
func isEmpty() -> Bool {
return self.drawing == PKDrawing()
}
}
这将 return 为假,但与 canvasView.drawing 无关。甚至,PKDrawing() == PKDrawing()
returns false.
这是我检查绘图是否为空白的方法:
extension PKDrawing {
var isBlank: Bool {
get {
return self.bounds == CGRect(origin: CGPoint(x: CGFloat.infinity, y: CGFloat.infinity), size: .zero)
}
}
}
在这种情况下,您可以检查绘图对象的bounds
。而iOS14给出了这张图包含的strokes
extension PKDrawing {
func isEmpty() -> Bool {
if #available(iOS 14.0, *) {
return strokes.isEmpty
} else {
return drawing.bounds.isEmpty
}
}
}
根据文档,PKDrawing 符合 Equatable。但是如果用==比较2张空白的图,就return错了。我通过反馈应用程序提交了一个错误,但我在这里发帖希望我错过了一些东西,或者其他人也会提交错误报告以便修复这个问题。我需要检查 PKCanvasView 是否有任何内容,并且由于 PKDrawing 是不透明的,我们无法查询笔画或其他数据。鉴于有限的api,似乎最好的检查方法是这样的:
extension PKCanvasView {
func isEmpty() -> Bool {
return self.drawing == PKDrawing()
}
}
这将 return 为假,但与 canvasView.drawing 无关。甚至,PKDrawing() == PKDrawing()
returns false.
这是我检查绘图是否为空白的方法:
extension PKDrawing {
var isBlank: Bool {
get {
return self.bounds == CGRect(origin: CGPoint(x: CGFloat.infinity, y: CGFloat.infinity), size: .zero)
}
}
}
在这种情况下,您可以检查绘图对象的bounds
。而iOS14给出了这张图包含的strokes
extension PKDrawing {
func isEmpty() -> Bool {
if #available(iOS 14.0, *) {
return strokes.isEmpty
} else {
return drawing.bounds.isEmpty
}
}
}