我正在将
MaLiang
包与 SwiftUI 一起使用:
struct ContentView: View {
var body: some View {
DrawingEngine(isPencil: $isApplePencil, isPrint: $isPrint, canvasData: $canvasData)
.frame(width: proxy.size.width - 100, height: proxy.size.height - 100)
.cornerRadius(15)
}
}
struct DrawingEngine: UIViewRepresentable {
@Binding var isPencil: Bool
@Binding var isPrint: Bool
@Binding var canvasData: Data
let canvas = Canvas(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
func makeUIView(context: Context) -> some UIView {
canvas.setup()
//let image = UIImage(named: "pencil")
//let data = image?.pngData() ?? Data()
let pencil = try? canvas.registerBrush()
pencil?.forceSensitive = 0.5
pencil?.use()
if isPencil {
canvas.isPencilMode = true
}
return canvas
}
func updateUIView(_ uiView: UIViewType, context: Context) {
if isPrint {
print()
isPrint = false
}
}
func print() {
do {
let data = canvas.data.elements
let encode = JSONEncoder()
canvasData = try encode.encode(data)
} catch{
Swift.print(error)
}
}
}
如何打印画布上的数据?我打算将其存储到 SwiftData 中,但是当我尝试这样做时,这就是我得到的:
调用实例方法“getValue”时没有完全匹配
调用实例方法“setValue”时没有完全匹配
使用此代码:
@Model
class Drawing {
var id: Int
var name: String
var drawing: CanvasData
init(id: Int, name: String, drawing: CanvasData) {
self.id = id
self.name = name
self.drawing = drawing
}
}
这非常令人沮丧,因为我找不到任何文档来指导我?