【发布时间】:2021-12-15 13:21:04
【问题描述】:
由于我是 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 }
【问题讨论】: