由于我对 SwiftUI 编程很陌生,所以我想问一下将图像粘贴到 PKCanvasView 中的最佳方法是什么。
我不希望获得任何代码,但可能会获得一些指导,以实现我的目标。不幸的是,我发现的唯一教程是将图像设置为背景图像以在其上绘制。但是,我不想拥有全屏图像,而是可以根据用户需要放置和调整大小的图像。
我在带有 DrawingWrapper 的 Swift UI 中使用 PencilKit:
struct DrawingWrapper: UIViewControllerRepresentable {
typealias UIViewControllerType = DrawingViewController
var manager: API
func makeUIViewController(context: Context) -> DrawingViewController {
let viewController = DrawingViewController()
viewController.drawingData = manager.getData()
viewController.drawingChanged = { data in
manager.updateDrawingData(data: data)
let canvas = viewController.canvas
manager.updateImage(image: canvas.drawing.image(from: canvas.bounds, scale: 1.0))
}
return viewController
}
func updateUIViewController(_ uiViewController: DrawingViewController, context: Context) {
uiViewController.drawingData = manager.getData()
}
}
我的 DrawingViewController 看起来像这样:
class DrawingViewController: UIViewController {
lazy var canvas: PKCanvasView = {
let v = PKCanvasView()
v.drawingPolicy = .pencilOnly
v.minimumZoomScale = 1
v.maximumZoomScale = 2
v.translatesAutoresizingMaskIntoConstraints = false
return v
}()
lazy var toolPicker: PKToolPicker = {
let toolPicker = PKToolPicker()
toolPicker.addObserver(self)
return toolPicker
}()
var drawingData = Data()
var drawingChanged: (Data) -> Void = { _ in }